springboot教程5——Servlets, Filters, listeners

                        web 应用开发-Servlets, Filters, listeners在 spring boot 中的三种实现方式
1 通过注册 ServletRegistrationBean、FilterRegistrationBean 和
ServletListenerRegistrationBean 获得控制

/**
* 自定义 servlet
*
* @author wujing
*/
public class CustomServlet extends HttpServlet {
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
            System.out.println("servlet get method");
            doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            System.out.println("servlet post method");
            response.getWriter().write("hello world");
        }
    }
    /**
    * 自定义 filter
    *
    * @author wujing
    */
    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");
        }
    }
    /**
    * 自定义 listener
    *
    * @author wujing
    */
    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");
        }
}

  在启动类里面注册 bean

@Bean
public ServletRegistrationBean servletRegistrationBean() {
    return new ServletRegistrationBean(new CustomServlet(), "/roncoo");
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
    return new FilterRegistrationBean(new CustomFilter(), servletRegistrationBean());
}
@Bean
public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean() {
    return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
}

 方法二: 通过实现 ServletContextInitializer 接口直接注册
 

启动类 implements ServletContextInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws
            ServletException {
            servletContext.addServlet("customServlet", new CustomServlet()).addMapping("/roncoo");
            servletContext.addFilter("customFilter", new CustomFilter())
.addMappingForServletNames(EnumSet.of(DispatcherType.REQUES
T), true, "customServlet");
            servletContext.addListener(new CustomListener());
}

方法三: 在 SpringBootApplication 上使用@ServletComponentScan 注解后,直接通过@WebServlet、
@WebFilter、 @WebListener 注解自动注册

 

猜你喜欢

转载自blog.csdn.net/dahaiaaaqe/article/details/82193792