基於注解的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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM