1. 程式人生 > >基於註解的SpringMVC添加其他的Servlet、Filter以及Listener

基於註解的SpringMVC添加其他的Servlet、Filter以及Listener

etc patch ping dispatch 重寫 ppi gist ota tex

我們可以在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     }

基於註解的SpringMVC添加其他的Servlet、Filter以及Listener