SpringMVC 配置多个dispatcher 及WebApplicationInitializer的使用
<!-- spring mvc start -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SytDeveloper</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/developer-spring-mvc.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SytDeveloper</servlet-name>
<url-pattern>/developer/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<!-- spring mvc end -->
注意:
1.在developer-spring-mvc.xml中配置viewResolver时,<property name="prefix">中不要在以/developer/开头,不然会出现“404 Problem accessing“问题:
No mapping found for HTTP request with URI [/developer/html/index.jsp] in DispatcherServlet with name 'developerMvc'
因为DispatcherServlet会把页面路径当做URI处理,而不是进行视图解析
2.SytDeveloper的 url-pattern 后面要代*,如果不带,会使用名称为SpringMVC 的DispatcherServlet进行处理
另外,在多模块的开发过程中,如果需要多个DispatcherServlet,可能需要修改web.xml,比较繁琐,还降低了模块随意组合性,开始考虑思路是web.xml是否可以include其他xml文件,但是web.xml好像不允许include,所以可以使用WebApplicationInitializer来进行配置,注意只有配合 Servlet 3.0+才可以实现。关于WebApplicationInitializer的详细介绍,网上有许多详细介绍,主要原理是容器会自动扫面ServletContainerInitializer接口的实现类 ,然后调用onStartup方法,Spring为我们提供了一个实现类SpringServletContainerInitializer,而只要是WebApplicationInitializer的实现类就都可以被SpringServletContainerInitializer自动识别处理,想详细了解可以查看这几个类的源代码。
例子:
将上面web.xml中的SpringMVC配置在代码中进行,就变成了如下:
/**
* @title: FrameDefaultInitializer.java
* @package com.shuyuntu.initializer
* @description: TODO 对Frame进行初始化配置,可以初始化配置filter、listener、servlet等
* @copyright: shuyuntu.com
* @author 张世民
* @date 2016年8月17日 上午9:28:03
* @version 1.0
*/
public class FrameDefaultInitializer implements WebApplicationInitializer { @Override
public void onStartup(ServletContext servletContext) throws ServletException {
// TODO 运行初始化
servletContext.getServletRegistration("default").addMapping("*.html"); // 添加Spring mvc 配置
XmlWebApplicationContext appContext = new XmlWebApplicationContext();
appContext.setConfigLocation("classpath*:/spring-mvc.xml");
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("springMvc",
new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(100);
dispatcher.addMapping("/");
} }
附:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/WebApplicationInitializer.html
使用代码进行配置,感觉模块与模块之间更加灵活,一个平台需要哪些模块就可以直接在maven中配置随意引用
SpringMVC 配置多个dispatcher 及WebApplicationInitializer的使用的更多相关文章
- Spring实战第七章————SpringMVC配置的替代方案
SpringMVC配置的替代方案 自定义DispatherServlet配置 我们之前在SpittrWebAppInitializer所编写的三个方法仅仅是必须要重载的abstract方法.但还有更多 ...
- SpringMVC配置实例
一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--Dis ...
- SpringMVC配置与使用
一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...
- 3.2.2 SpringMVC配置式开发
SpringMVC配置式开发 1. SpringMVC运行原理(执行过程) 2. 需求 用户提交一个请求, 服务端处理器接收到请求后, 给出一条信息,在相应页面中显示该条信息 3. 开发步骤 (1) ...
- springmvc配置之mvc:annotation-driven
为了简化springmvc配置,spring同时引入了mvc namespace, 配置了 <mvc:annotation-driven/> spring会默认注册a RequestMap ...
- SpringMVC配置多视图-内容协商原理
SpringMVC配置多视图-内容协商原理 2014年03月06日 16:46:59 日积月累_滴水石穿 阅读数:10964更多 个人分类: SpringMVC Spring Framework ...
- Spring-MVC配置Gson做为Message Converter解析Json
Spring-MVC配置Gson做为Message Converter解析Json 在学习Spring的时候看到可以使用@RequestBody 和@ResponseBody注解来是的Spring自动 ...
- springMVC 配置jdbcTemplate连接Oracle数据库出错
springMVC 配置jdbcTemplate连接Oracle数据库出错 错误信息: log4j:WARN No appenders could be found for logger (org.s ...
- Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...
随机推荐
- flask第八篇——url_for【1】
我们已经知道,知道了url就可以找到对应的视图函数,那么现在问题来了,如果我们知道了视图函数,要怎么找到url呢?这时候我们就需要url_for函数了. # coding: utf-8 from fl ...
- 《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间
打印信息经常用的有两个: # coding: utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get( ...
- 从hello world 说程序运行机制
转自:http://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html 开篇 学习任何一门编程语言,都会从hello world 开始 ...
- BW模型数据删除
删除数据一般可以按请求(Request)来删除,需要从顶层模型往下删:也可以完成删除,在模型中就没有删除的顺序.本例中采用完全删除,但是按照从顶层模型往下的顺序删除数据. 1.删除信息立方体数据 ...
- 关于git的基本使用
参考:http://www.cnblogs.com/mengdd/p/3585038.html
- 设置Maven的Web工程启动名称
java application的web工程名称就是工程名称:但是maven则不同,他的默认的website名称是在maven的pom文件里面的artifactId节点配置的值:例如: <gro ...
- bzoj1503[NOI2004]郁闷的出纳员——Splay
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1503 好奇怪呀!为什么而TLE? 各种修改终于卡时过了.可是大家比我快多了呀?难道是因为自己 ...
- mongodb 的一些启动命令
启动命令 nohup /home/sh/local/mongodb-linux-x86_64-rhel62-3.4.0/bin/mongod -dbpath /home/sh/local/mongod ...
- php通过Mysqli和PDO连接mysql数据详解
前言 在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通 ...
- 【转】Jmeter变量参数化及函数应用
我们在使用Jmeter录制脚本后,经常会对已录制的脚本进行修改,需要把一些参数使用一些变量替代,Jmeter是支持这些功能的,不过是通过函数实现的.下面举一个简单的例子,使用随机数替代一个参数: 打开 ...