基于注解的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 }
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/10260648.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
分类:
Spring MVC
如果文章内容对您有所帮助,欢迎赞赏.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!