Servlet 3.0之ServletContainerInitializer与SpringMVC
2021/4/14 18:27:28
本文主要是介绍Servlet 3.0之ServletContainerInitializer与SpringMVC,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 流程
- ServletContainerInitializer的实现类
- springMVC
流程
- Servlet容器启动会扫描。当前应用里面每一个jar报的ServletContainerInitializer的实现
- ServletContainerInitializer的实现类必须绑定在 MATEINT/services/javax.servlet.ServletContainerInitializer下 。文件的内容就是ServletContainerInitializer实现的全类名
总结:容器在启动应用的时候,会扫描当前应用每一个jar包里面
MATE-INF/services/javax.servlet.ServletContainerInitializer中指定的实现类,启动并执行这个方法
ServletContainerInitializer的实现类
//容器启动的时候会将HandlesTypes指定的类型下面的子类(子类子接口等)传递过来 //传入感兴趣的类型 @HandlesTypes(value = {HellowService。class}) public class MyServletContainerInitializer implements ServletContainerInitializer { //在容器启动的时候 会自动运行这个方法 /** * * @param c 感兴趣类型的所有子类型 * @param ctx 代表当前web应用的 ServletContext 一个应用一个ctx * @throws ServletException */ //1.使用ServletContext注册web组件(servlet filter listener) @Override public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException { System.out.println("感兴趣的类型"); for (Class<?> type:c){ System.out.println(type); } //注册组件 ServletRegistration.Dynamic servlet = ctx.addServlet("servlet", new UserServlet()); servlet.addMapping("/u1","u2"); //注册Filter FilterRegistration.Dynamic filter = ctx.addFilter("filter", new UserFilter()); filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/*"); //注册listener ctx.addListener(UserListener.class); } }
- @HandlesTypes(value = {HellowService.class}) 容器启动的时候会将HandlesTypes指定的类型下面的子类(子类子接口等)传递过来
- 通过 ServletContext 为容器中注册web组件(Servlet,Filter,Listener),必须在项目启动的时候添加
- ServletContainerInitializer得到的ServletContext
- SerletContextListener得到的ServletContext
springMVC
- spring的应用一启动会加载感兴趣的WebApplicationInitializer接口下的所有组件(
- 并且为WebApplicationInitializer组件创建对象(组件不是接口,不是抽象类)
1. AbstractContextLoaderInitializer:创建根容器 createRootApplicationContext();
2. AbstractDispatcherServletInitializer
创建了一个web的ioc容器;createServletApplicationContext();
创建了DispatcherServlet;createDispatcherServlet()
将创建的DispatcherServlet添加到ServletContext中 getServletMappering()
3. AbstractAnnotationConfigDispatcherServletInitializer
创建根容器:createRootApplicationContext()
gootRootConfigClasses();传入一个配置类
创建web的ioc容器:createServletApplicationContext();
获取配置类:getServletConfigClassess();
总结:
以注解方式启动SpringMVC;继承AbstractAnnotationConfigDispatherServletInitializer
抽象方法指定DispaterServlet的配信息
这篇关于Servlet 3.0之ServletContainerInitializer与SpringMVC的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现