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     }
  • 相关阅读:
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录3
    19c上ADG主库sys密码修改会影响备库同步吗?
    MySQL中sql_mode的设置
    [自制工具]批量后台更新统计信息
    openssl加解密实战
    [自制工具]简便易用的ADDM报告生成工具
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录2
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录1
    Windows11如何设置经典的右键菜单
    MVC3过滤器实现多语言
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10260648.html
Copyright © 2011-2022 走看看