SpringBoot实现Servlet、过滤器(Filter)、监听器(Listener)
有两种方法实现Servlet、Filter、Listener,在启动类上添加ServletComponentScan注解,或者分别创建RegistrationBean。
一、使用在启动类上添加ServletComponentScan注解的方式
1、创建Servlet、Filter、Listener,并添加对应注解
1)UserServlet
@WebServlet("/user.do")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().print("user servlet");
}
}
2)LogFilter
@WebFilter("/user1.do")
public class LogFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println("income log filter "+arg0.getRemoteHost());
arg2.doFilter(arg0, arg1);
}
}
3)MyContextListener
@WebListener public class MyContextListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) {} @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("start at " + LocalDateTime.now().toString()); } }
2、启动类添加ServletComponentScan注解
@ServletComponentScan @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication app=new SpringApplication(App.class); ConfigurableApplicationContext context= app.run(args); } }
3、测试
1)启动,控制台输出:start at ... ...,Listener成功
1)浏览器输入:http://localhost:8080/user.do,显示user servlet,Servlet成功
2)浏览器输入:http://localhost:8080/user.do,控制台输出income log filter...,Filter成功
二、使用创建RegistrationBean的方式
1、创建Servlet、Filter、Listener,并添加对应注解(同上)
2、分别创建RegistrationBean
@SpringBootConfiguration public class ServletConfig {
@Bean public ServletRegistrationBean createBookServlet(){ ServletRegistrationBean servlet= new ServletRegistrationBean(new UserServlet(),"/user.do"); return servlet; }
@Bean public FilterRegistrationBean createEchoFilter(){ FilterRegistrationBean filter=new FilterRegistrationBean(); filter.setFilter(new LogFilter()); filter.setUrlPatterns(Arrays.asList("/user.do")); return filter; }
@Bean public ServletListenerRegistrationBean<MyContextListener> createStartedUpListener(){ ServletListenerRegistrationBean<MyContextListener> servletRegistrationBean
=new ServletListenerRegistrationBean(new MyContextListener()); return servletRegistrationBean; } }
3、测试(启动类去掉ServletComponentScan注解,其余同上)
浙公网安备 33010602011771号