Spring Boot 整合 Servlet、Filter、Listener

有的时候需要在 springboot 工程里面加入 Servlet、Filter 和 Listener 等

1. 环境准备 - 项目依赖

修改pom.xml文件,配置项目相关依赖

  1. <dependencies>
  2. <!-- 引入web项目启动器 -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <!-- 引入spring boot的测试类 -->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-test</artifactId>
  11. <scope>test</scope>
  12. </dependency>
  13. </dependencies>

2. 整合步骤

  1. 在项目的启动类上增加注解@ServletComponentScan(basePackages = {"xxx.xxx.xxx"}) ``` package com.moon.webcomponent;

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan;

/**

  • Spring Boot 整合 Servlet、Filter、Listener 启动类 */ @SpringBootApplication // @ServletComponentScan 注解作用是到扫描指定包中有@WebServlet、@WebFilter、@WebListener等注解的类 @ServletComponentScan(basePackages = {“com.moon.webcomponent”}) public class ComponentApplication { public static void main(String[] args) {
    1. SpringApplication.run(ComponentApplication.class, args);
    } }
  1. 2. 该注解会扫描指定包(basePackages)下面的注解
  2. - `@WebServlet`
  3. - `@WebFilter`
  4. - `@WebListener`
  5. 创建自定义servlet

package com.moon.webcomponent.servlet;

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;

/**

  • 自定义servlet / @WebServlet(urlPatterns = “/myservlet/“) public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)

    1. throws ServletException, IOException {
    2. System.out.println("-----------------MyServlet.doGet()-----------------------");

    }

    @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)

    1. throws ServletException, IOException {
    2. System.out.println("-----------------MyServlet.doPost()-----------------------");

    } }

  1. 创建自定义filter

package com.moon.webcomponent.filter;

import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import java.io.IOException;

/**

  • 自定义 Filter / @WebFilter(urlPatterns = “/“, filterName = “myFilter”) public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    1. throws IOException, ServletException {
    2. System.out.println("--------MyFilter----------");
    3. chain.doFilter(request, response);
    } }
  1. 创建自定义listener

package com.moon.webcomponent.listener;

import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener;

/**

  • 自定义 Listenr *
  • @author MoonZero
  • @version 1.0
  • @date 2020-3-15 12:11
  • @description */ @WebListener public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) {
    1. System.out.println("================ MyListener.contextInitialized() 方法执行================");
    } @Override public void contextDestroyed(ServletContextEvent sce) {
    1. System.out.println("================ MyListener.contextDestroyed() 方法执行================");
    } }

```

3. 运行测试

  • 在浏览器输入url:http://localhost:8080/myservlet/1
  • 运行结果

05-SpringBoot整合Servlet、Filter、Listener - 图1