zoukankan      html  css  js  c++  java
  • 基于注解的SpringMVC添加其他的Servlet、Filter以及Listener

    我们可以在AbstractAnnotationConfigDispatcherServletInitializer的实现类中重写onStartup(ServletContext servletContext)方法添加其他的Servlet、Filter以及Listener

     1 public class SpringWebAppInit extends AbstractAnnotationConfigDispatcherServletInitializer {
     2     //Spring容器
     3     @Override
     4     protected Class<?>[] getRootConfigClasses() {
     5         return new Class[]{RootConfig.class};
     6     }
     7 
     8     //SpringMVC容器
     9     @Override
    10     protected Class<?>[] getServletConfigClasses() {
    11         return new Class[]{WebConfig.class};
    12     }
    13 
    14     //DispatcherServlet映射关系
    15     @Override
    16     protected String[] getServletMappings() {
    17         return new String[]{"/"};
    18     }
    19     
    20     @Override
    21     public void onStartup(ServletContext servletContext) throws ServletException {
    22         super.onStartup(servletContext);
    23         ServletRegistration.Dynamic userServlet = servletContext.addServlet("UserServlet", UserServlet.class);
    24         userServlet.addMapping("/user");
    25     }
    26 }

    也可以写一个WebApplicationInitializer接口的实现类,通过重写onStartup(ServletContext servletContext)方法添加其他的Servlet、Filter以及Listener

     1 /**
     2  * 实现WebApplicationInitializer接口注册Servlet,也可以用来注册DispatcherServlet
     3  */
     4 public class MyServletInit implements WebApplicationInitializer {
     5     @Override
     6     public void onStartup(ServletContext servletContext) throws ServletException {
     7         ServletRegistration.Dynamic userServlet = servletContext.addServlet("UserServlet", UserServlet.class);
     8         userServlet.addMapping("/user");
     9         userServlet.setLoadOnStartup(0);
    10     }
    11 }

    如果你只是注册Filter,并且该Filter只会映射到DispatcherServlet上的话,那么只需要重写AbstractAnnotationConfigDispatcherServletInitializer的getServletFilters()方法。在这个方法中没有必要声明它的映射路径,因为getServletFilters()方法返回的所有Filter都会映射到DispatcherServlet上

    1     @Override
    2     protected Filter[] getServletFilters() {
    3         return new Filter[]{new MyFilter()};
    4     }
  • 相关阅读:
    [cf1097F]Alex and a TV Show
    [cf1097E]Egor and an RPG game
    2.2 物理层下面的传输媒体
    2.1 物理层的基本概念
    8 垃圾回收
    7 直接内存
    6 方法区
    1.5 计算机网络体系结构
    1.4 计算机网络的性能指标
    1.3 计算机网络的定义和分类
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10260648.html
Copyright © 2011-2022 走看看