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