SpringBoot—-配置Servlet、Filter、Listener三大组件41

一步:编写三大组件的类

Servlet

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("hello Servlet!");
    }
}

Filter

public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void destroy() {}

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

Listener

public class MyListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized...web应用启动");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("contextInitialized...web应用销毁");
    }
}

第二步:编写配置类,注册三大组件的配置

@Configuration
public class MyServerConfig {

    //注册三大组件
    @Bean
    public ServletRegistrationBean myServlet(){

        ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");

        return servletServletRegistrationBean;
    }

    @Bean
    FilterRegistrationBean myFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new MyFilter());
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));

        return filterRegistrationBean;
    }

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

}

在SpringBoot中也有类似的例子,就是DispatcherServletAutoConfigurationr里面有dispatcherServletRegistration方法就是配置了SpringMVC的前端控制器,Ctrl点击getPath()可以看到配置前端控制器拦截的路径为“/”

1.代表拦截所有的请求包括静态资源,但是不包括jsp请求

2.也从这个方法可以知道SpringBoot2.0可以在通过配置WebMvcProperties这个属性类来配置SpringMVC

 
 
 

 


版权声明:本文为weixin_39337047原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。