通过程序定义DispatcherServlet
以往我们在使用SpringMVC的时候都需要在web.xml中定义一个DispatcherServlet。基于Servlet3编程时我们也可以通过程序来注册DispatcherServlet,Servlet3的ServletContainerInitializer允许我们在容器启动的时候通过程序注册一些Servlet对象,Spring提供了一个实现,叫SpringServletContainerInitializer,同时对外开放了一个WebApplicationInitializer接口,如果需要通过程序来注册DispatcherServlet,我们只需自定义一个WebApplicationInitializer实现类,在其onStartup方法体中注册即可。容器启动的时候会自动调用其onStartup方法。
在下面的代码中我们自定义了一个WebApplicationInitializer实现类,并通过程序注册了DispatcherServlet。Spring也提供了WebApplicationInitializer的一个抽象实现,AbstractDispatcherServletInitializer,通过继承该抽象类,我们可以通过重写其中的方法的方式处理我们关心的某部分内容,比如可以通过重写getServletMappings方法指定servlet的映射路径;通过重写getServletFilters方法指定DispatcherServlet需要应用的Filter;也可以通过重写customizeRegistration自定义一些配置。
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
XmlWebApplicationContext appContext = new XmlWebApplicationContext();
appContext.setConfigLocation("/WEB-INF/applicationContext-mvc.xml");
ServletRegistration.Dynamic registration = servletContext.addServlet("dispatcher", new
DispatcherServlet(appContext));
registration.setLoadOnStartup(1);
registration.setAsyncSupported(true);
registration.addMapping("/springmvc/*");
}
}
也可以选择直接继承AbstractDispatcherServletInitializer,然后实现其中的抽象方法。
(注:本文是基于Spring4.1.0所写)
相关推荐
Spring MVC是Spring框架的一个模块,专注于构建Web应用程序。作为架构师和Java开发者,深入理解Spring MVC的原理和实践应用...例如,通过使用@Controller和@RequestMapping注解,开发者可以轻松定义控制器和请求映射。
通过Spring Boot框架的支持,可以轻松构建和管理RESTful API,定义资源的URL路径和相应的请求方法,使得前后端之间的交互更加简单和可靠。 前端技术:瑞吉外卖项目的前端界面通常使用HTML、CSS和JavaScript等技术...
@Configuration :将类标记为应用程序上下文的bean定义的源 @EnableAutoConfiguration :告诉Spring引导开始基于类路径和其他bean添加bean。 例如,如果spring-webmvc在类路径上,则将激活关键的web-application-...
在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...
运行模式通过client服务内部转发MockReq达到DispatcherServlet的目的.client通过RestTemplate调用本地服务, 在client端的配置文件中设置端口号, methodType = 1, 并且client端需独立运行.通过url反射调用目标方法, ...
13.1.2配置dispatcherservlet 13.1.3springmvc概述 13.2将请求映射到控制器 13.2.1使用simpleurlhandlermapping 13.2.2使用controllerclassnamehandlermapping 13.2.3使用元数据映射控制器 13.2.4使用多映射...
13.1.2 配置DispatcherServlet 13.1.3 Spring MVC概述 13.2 将请求映射到控制器 13.2.1 使用SimpleUrlHandler Mapping 13.2.2 使用ControllerClassName HandlerMapping 13.2.3 使用元数据映射控制器 13.2.4 ...
13.1.2 配置DispatcherServlet 13.1.3 Spring MVC概述 13.2 将请求映射到控制器 13.2.1 使用SimpleUrlHandler Mapping 13.2.2 使用ControllerClassName HandlerMapping 13.2.3 使用元数据映射控制器 13.2.4 ...
8.1.2 配置DispatcherServlet 8.1.3 Spring MVC概述 8.2 将请求映射到控制器 8.2.1 将URL映射到Bean名称 8.2.2 使用SimpleUrlHandlerMapping 8.2.3 使用元数据映射控制器 8.2.4 使用多...
程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, ...
2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...
2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...
17.4.3 通过扩展基类所定义DAO类 17.4.4 DAO Bean的装配 17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及测试数据 17.5.3 编写DAO测试基类 17.5.4 编写...
17.4.3 通过扩展基类所定义DAO类 17.4.4 DAO Bean的装配 17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及测试数据 17.5.3 编写DAO测试基类 17.5.4 编写...
关闭Spring MVC DispatcherServlet vii. 65.7. 关闭默认的MVC配置 Spring Boot参考指南 7 viii. 65.8. 自定义ViewResolvers v. 66. 日志 i. 66.1. 配置Logback ii. 66.2. 配置Log4j i. 66.2.1. 使用YAML或JSON配置...
2.2.1. 程序计数器(线程私有) ................................................................................................................ 22 2.2.2. 虚拟机栈(线程私有) .................................