博客
关于我
Spring Boot - Add a Servlet to an Application
阅读量:308 次
发布时间:2019-03-03

本文共 3877 字,大约阅读时间需要 12 分钟。

Spring Boot 环境下的 Servlet 配置与使用

准备

新建 Spring Boot Starter Project

  • 使用 IntelliJ IDEA 创建一个新的 Maven 项目
  • 添加 Spring Boot Starter Web 依赖到 pom.xml 中
  • org.springframework.boot
    spring-boot-starter-web
    1. 新建一个 Servlet 类,位于 src/main/java/com/mk/servlet/HelloServlet.java,内容如下:
    2. package com.mk.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public HelloServlet() {        System.out.println("HelloServlet.HelloServlet()");    }    @Override    public void init() throws ServletException {        System.out.println("HelloServlet.init()");    }    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        System.out.println("HelloServlet.doGet()");        PrintWriter writer = response.getWriter();        writer.write("Hello, " + request.getRemoteAddr());        writer.flush();        writer.close();    }    @Override    public void destroy() {        System.out.println("HelloServlet.destroy()");    }}

      配置类

      创建一个配置类 ServletComponentConfiguration.java,位于 src/main/java/com/mk/configuration/ServletComponentConfiguration.java,内容如下:

      package com.mk.configuration;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ServletComponentScan(basePackages = {"com.mk.servlet"})public class ServletComponentConfiguration {}

      启动类

      创建一个启动类 SpringBootServletApplication.java,位于 src/main/java/com/mk/SpringBootServletApplication.java,内容如下:

      package com.mk;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringBootServletApplication {    public static void main(String[] args) {        SpringApplication.run(SpringBootServletApplication.class, args);    }}

      通过 Spring Bean 注册 Servlet

      编辑 ServletComponentConfiguration.java,添加以下代码:

      package com.mk.configuration;import java.util.Arrays;import javax.servlet.Servlet;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.mk.servlet.HelloServlet;@Configurationpublic class ServletComponentConfiguration {        @Bean    public ServletRegistrationBean servletRegistration() {        ServletRegistrationBean registration = new ServletRegistrationBean();        registration.setServlet(new HelloServlet());        registration.setUrlMappings(Arrays.asList("/hello"));        return registration;    }}

      启动应用后,控制台会输出:

      HelloServlet.HelloServlet()HelloServlet.init()

      表示 Servlet 已经成功注册到 Spring Boot 容器中。

      使用类路劲扫描注册 Servlet

      编辑 HelloServlet.java,添加 @WebServlet 注解:

      package com.mk.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns = "/hello")public class HelloServlet extends HttpServlet {    // ... 保持不变}

      编辑 ServletComponentConfiguration.java,删除相关代码,并添加 @ServletComponentScan 注解:

      package com.mk.configuration;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ServletComponentScan(basePackages = {"com.mk.servlet"})public class ServletComponentConfiguration {}

      启动应用后,访问 /hello URL 应该能够正常工作。

      注意事项

    3. HelloServlet.init() 方法会在第一次访问时调用,后续不会重复调用
    4. 使用 @WebServlet 注解可以直接定义 URL 映射路径

    转载地址:http://jhyq.baihongyu.com/

    你可能感兴趣的文章
    Python 并发编程
    查看>>
    Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
    查看>>
    python 序列化操作
    查看>>
    Python 开发者,这 7 个 VS Code 插件极力推荐
    查看>>
    python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
    查看>>
    python 录音左右声道_Python分离立体声wav压缩文件的左右声道
    查看>>
    Python 循环异或对文件进行加解密
    查看>>
    Python开发环境搭建(附VMware安装包及虚拟机环境)
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    python实现非参数统计的Cochran检验 (附完整源码)
    查看>>
    python 怎么验证是否安装成功 scrapy
    查看>>
    Python 手写数字识别-1
    查看>>
    Python实现接口自动化测试库(JSON与Requests)详解
    查看>>
    Python 手写数字识别-3-sklearn中的几种算法
    查看>>
    python实现SSIM和MSSSIM计算 (附完整源码)
    查看>>
    Python 打开文件注意事项
    查看>>
    python 批量修改文件名_python windows下批量修改文件名
    查看>>
    Python 抓取网页乱码问题 以及EXCEL乱码
    查看>>
    python 抓取网页内容
    查看>>