SpringBoot中注册Servlet三大组件

SpringBoot中默认内置了Servlet容器,Tomcat。SpringBoot默认是以jar包的方式启动内置的Servlet容器,没有web.xml文件。所以只能通过自定义servlet配置。使用ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean来实现servle的三大组件。

CustomServletConfig

@Configuration
public class CustomServletConfig {
    //注册servlet
    @Bean
    public ServletRegistrationBean myServlet()
    {
        ServletRegistrationBean<Myservlet> registrationBean = new ServletRegistrationBean<>();
        registrationBean.setServlet(new Myservlet());
        registrationBean.addUrlMappings("/myServlet");
        return  registrationBean;

    }
    //注册Filter

    @Bean
    public FilterRegistrationBean myFilter()
    {
        System.out.println("CustomServletConfig.myFilter");
        FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new MyFilter());
        registrationBean.addUrlPatterns("/showLogin","/test1");
        return registrationBean;
    }

    @Bean
    public ServletListenerRegistrationBean myListener()
    {
        ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>();

        servletListenerRegistrationBean.setListener(new MyListener());
        return  servletListenerRegistrationBean;
    }
}

Myservlet

public class Myservlet extends HttpServlet {

    @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("Myservlet.doGet");

        doPost(req,resp);
    }

    @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("Myservlet.doPost");

    }
}

MyListener

public class MyListener  implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {

        System.out.println("MyListener.contextInitialized");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        System.out.println("MyListener.contextDestroyed");
    }
}

MyFilter

public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        System.out.println("MyFilter.doFilter");
        filterChain.doFilter(servletRequest,servletResponse);

    }

    @Override
    public void destroy() {

    }
}

MyListener

public class MyListener  implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {

        System.out.println("MyListener.contextInitialized");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        System.out.println("MyListener.contextDestroyed");
    }
}

原文地址:https://www.cnblogs.com/lilihai/p/10177660.html