峰哥说技术:15-Spring Boot整合web基础组件

Spring Boot深度课程系列

峰哥说技术—2020庚子年重磅推出、战胜病毒、我们在行动

15  峰哥说技术:Spring Boot整合web基础组件

一般情况下,使用了Spring MVC这些框架后,基本上就不会再去使用Servlet、Filter和Listener这些web组件。但是有时候需要使用第三方的框架,就可能需要使用。比如在使用报表插件的时候,可能就需要使用这些web组件。这也是我们在这里讲解的原因之一。 它们的整合非常简单,可以在工程中直接定义Servlet、Filter和Listener,不需要使用web.xml,也不需要加任何的依赖。最后就是在启动类中添加注解@ServletComponentScan。这个注解可以扫描这三种类型的web组件。下面用一个案例来说明。

案例:新建一个工程,在工程中使用web基础组件,并进行测试。

步骤:

1)创建工程chapter04-webcomponent,添加web依赖

 

2)创建Servlet

@WebServlet(urlPatterns = "/hello_servlet")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello,Servlet");
    }
}

3)创建Filter

@WebFilter

public class HelloFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("hello Filter init");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("hello Filter doFilter");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("hello Filter destroy");
    }
}

4)创建Listener

@WebListener
public class HelloHttpSessionListener implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("HelloHttpSessionListener requestDestroyed");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("HelloHttpSessionListener requestInitialized");
    }
}

5)在启动类添加注解@ServletComponentScan

@SpringBootApplication
@ServletComponentScan(basePackages = "com.java.chapter04webcomponent.webcomponent")
public class Chapter04WebcomponentApplication {
   public static void main(String[] args) {
      SpringApplication.run(Chapter04WebcomponentApplication.class, args);
   }
}

6)启动项目,可以看到如下结果。

 

大家可以看到过滤器初始化。然后在浏览器中输入:http://localhost:8080/hello_servlet

大家可以看到监听器、过滤器、servlet都发挥了作用了。

原文地址:https://www.cnblogs.com/027kgc/p/12502183.html