SpringBoot 整合Servlet、Filter和Listener

一般情况下,使用Spring、Spring MVC这些框架之后,基本上就告别Servlet、Filter以及Listener了,但是有时在整合一些第三方框架时,可能还是不得不使用Servlet。Spring Boot中对于整合这些基本的Web组件也提供了很好的支持。

 

添加如下三个组件:

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("name>>>" + req.getParameter("name"));
    }
}
@WebFilter("/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) {
        System.out.println("MyFilter>>>init");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("MyFilter>>>doFilter");
        chain.doFilter(request, response);
    }

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

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

 

• 这里定义了三个基本的组件,分别使用@WebServlet、@WebFilter和@WebListener三个注解进行标记。

• 这里以ServletRequestListener为例,但是对于其他的Listener,例如HttpSessionListener、ServletContextListener等也是支持的。

 

在项目入口类上添加@ServletComponentScan注解,实现对Servlet、Filter以及Listener的扫描

 

http://127.0.0.1:8081/my?name=null

 

 

参考文章: Spring Boot+Vue全栈开发实战 - 4.10 整合Servlet、Filter和Listener

 

posted @ 2022-04-12 14:27  草木物语  阅读(60)  评论(0编辑  收藏  举报