1. 程式人生 > >springBoot配置servlet,filter,listener

springBoot配置servlet,filter,listener

過濾器,監聽器,轉發器

1、customFilter過濾器

public class CustomFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init filter");
    }

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

2、CustomListener監聽器

public class CustomListener implements ServletContextListener
{
@Override public void contextInitialized(ServletContextEvent sce) { System.out.println("contextInitialized"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("contextDestroyed"); }

3、轉發器CustomServlet

public class
CustomServlet extends HttpServlet{
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("servlet get method"); doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("servlet post method"); resp.getWriter().write("hello world"); } }

方法一:通過註冊ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean獲得控制

@SpringBootApplication
public class SpringBootDemo71Application {
    @Bean//註冊Servlet
    public ServletRegistrationBean servletRegistrationBean() {
        return new ServletRegistrationBean(new CustomServlet(), "/roncoo");
    }
    @Bean//註冊Filter
    public FilterRegistrationBean filterRegistrationBean() {
        return new FilterRegistrationBean(new CustomFilter());
    }
    @Bean//註冊Listener
    public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean() {
        return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
    }
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo71Application.class, args);
    }
}

方法二:通過介面ServletContextInitializer直接註冊

@SpringBootApplication
public class SpringBootDemo71Application implements ServletContextInitializer{

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo71Application.class, args);
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addServlet("customServlet",new CustomServlet()).addMapping("/zzrdemo");
        servletContext.addFilter("customFilter",new CustomFilter()).addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),true,"customServlet");
        servletContext.addListener(new CustomListener());
    }
}

方法三:在SpringBootApplication使用註解@ServletComponentScan,然後在servlet,filter,listener上增加註解即可:

  • servlet上加註解:@WebServlet(value = "/zzrdemo",name = "customServlet")
  • filter上加註解:
    @WebFilter(urlPatterns = "/*",filterName = "customFilter")
  • listener上加註解:@WebListener