spring mvc 实体映射mvc怎么在配置文件中映射url到方法

1web.xml配置
& &servlet-name&SpringMVC&/servlet-name&
& &servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为--&
&!--[&servlet-name&]-servlet.xml,如SpringMVC-servlet.xml --&
&!-- &init-param&
& &param-name&contextConfigLocation&/param-name&
& &param-value&/WEB-INF/SpringMVC-servlet.xml&/param-value&
&/init-param& --&
&load-on-startup&1&/load-on-startup&
& &/servlet&
& &servlet-mapping&
& &servlet-name&SpringMVC&/servlet-name&
&!--这里的格式想写什么就写什么,非常自由,可以是*.a,*.b,*.aaaa,*.anything,只要在SpringMVC-servlet.xml配置文件的映射key中,也写入同样的后缀即可--&
&!--可以匹配多个格式--&
& &url-pattern&*.do&/url-pattern&
& &url-pattern&/index&/url-pattern&
& &/servlet-mapping&
2SpringMVC-servlet.xml配置文件(该配置文件的命名规则为web.xml中的servlet-name,-servlet.xml,由框架自动去找,如果不按照该规则命名,则框架找不到)
&部分一: &就是配置url和Handler之间的关系
& & &&bean id=&simpleUrlHandlerMapping& class=&org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&&
& & & & &property name=&mappings&&
& & & & & & &props&
& & & & & & &&!--这里的key随便写,这个key跟工程的代码路径没有任何关系,非常自由,想写什么写什么,还可以是/login.anythingaaaaa,/login(没有.扩展名也可以)。这里写什么,web配置文件中的拦截类型也些什么,并且http url请求里也得是这个,才能映射到。如果匹配到/user/login.do结尾的url请求,就进入loginController--&&
& & & & & & & &&prop key=&/user/login.do&&loginController&/prop&
& & & & & & &/props&
& & & & &/property&
& & &/bean&
& & &&bean id=&loginController& class=&com.pb.web.controller.LoginController&&
& & & & & & & &&&!--LoginController的两个成员变量的值successView和failView分别是是showAccount和login:--&&
&property name=&successView& value=&showAccount&&&/property&
&property name=&failView& value=&login&&&/property&
& & 部分二:如果这么设置了, 就规定了action处理后,要显示那个jsp界面。如输入http://127.0.0.1:8081/springmvc/user/login.do,则通过映射匹配成功后,去执行工程下的的/WEB-INF/jsp/login.jsp文件。
&!-- Default ViewResolver --&
&bean id=&viewResolver&
class=&org.springframework.web.servlet.view.InternalResourceViewResolver&&
&property name=&viewClass&
value=&org.springframework.web.servlet.view.JstlView& /&
&property name=&prefix& value=&/WEB-INF/jsp/& /&
&property name=&suffix& value=&.jsp&&&/property&
&/bean& & &
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:100339次
积分:4222
积分:4222
排名:第5622名
原创:316篇
转载:22篇
(95)(72)(7)(7)(36)(21)(9)(66)(1)(9)(10)(17)(1)spring 3.0 应用springmvc 构造RESTful URL 详细讲解 - badqiu - ITeye技术网站
由于下一版本的需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题。
springmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL。
, 这里还有struts2 rest构造的一篇文章:
简单例子如下,比如如下URL
HTTP GET =&
得到id = 1的blog
HTTP DELETE =& 删除 id = 1的blog
更新id = 1的blog
HTTP POST =&
以下详细解一下spring rest使用.
首先,我们带着如下三个问题查看本文。1. 如何在java构造没有扩展名的RESTful url,如 /forms/1,而不是 /forms/1.do
2. 由于我们要构造没有扩展名的url本来是处理静态资源的容器映射的,现在被我们的spring占用了,冲突怎么解决?3. 浏览器的form标签不支持提交delete,put请求,如何曲线解决?
springmvc rest 实现
springmvc的resturl是通过@RequestMapping 及@PathVariable annotation提供的,通过如@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)即可处理/blog/1 的delete请求.
@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)
public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) {
blogManager.removeById(id);
return new ModelAndView(LIST_ACTION);
@RequestMapping @PathVariable如果URL中带参数,则配合使用,如
@RequestMapping(value="/blog/{blogId}/message/{msgId}",method=RequestMethod.DELETE)
public ModelAndView delete(@PathVariable("blogId") Long blogId,@PathVariable("msgId") Long msgId,HttpServletRequest request,HttpServletResponse response) {
spring rest配置指南
1. springmvc web.xml配置
&!-- 该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问 http://localhost/foo.css ,现在http://localhost/static/foo.css --&
&servlet-mapping&
&servlet-name&default&/servlet-name&
&url-pattern&/static/*&/url-pattern&
&/servlet-mapping&
&servlet-name&springmvc&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&!-- URL重写filter,用于将访问静态资源http://localhost/foo.css 转为http://localhost/static/foo.css --&
&filter-name&UrlRewriteFilter&/filter-name&
&filter-class&org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&/filter-class&
&init-param&
&param-name&confReloadCheckInterval&/param-name&
&param-value&60&/param-value&
&/init-param&
&init-param&
&param-name&logLevel&/param-name&
&param-value&DEBUG&/param-value&
&/init-param&
&filter-mapping&
&filter-name&UrlRewriteFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 --&
&servlet-mapping&
&servlet-name&springmvc&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 --&
&filter-name&HiddenHttpMethodFilter&/filter-name&
&filter-class&org.springframework.web.filter.HiddenHttpMethodFilter&/filter-class&
&filter-mapping&
&filter-name&HiddenHttpMethodFilter&/filter-name&
&servlet-name&springmvc&/servlet-name&
&/filter-mapping&
2. webapp/WEB-INF/springmvc-servlet.xml配置,使用如下两个class激活@RequestMapping annotation
&bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/&
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/&
&beans default-autowire="byName"
&!-- 自动搜索@Controller标注的类 --&
&context:component-scan base-package="com.**.controller"/&
&bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/&
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/&
&!-- Default ViewResolver --&
&bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&
&property name="prefix" value="/pages"/&
&property name="suffix" value=".jsp"&&/property&
&bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="i18n/messages"/&
&!-- Mapping exception to the handler view --&
&bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"&
&!-- to /commons/error.jsp --&
&property name="defaultErrorView" value="/commons/error"/&
&property name="exceptionMappings"&
&/property&
3. Controller编写
* @RequestMapping("/userinfo") 具有层次关系,方法级的将在类一级@RequestMapping之一,
* 如下面示例, 访问方法级别的@RequestMapping("/new"),则URL为 /userinfo/new
@Controller
@RequestMapping("/userinfo")
public class UserInfoController extends BaseSpringController{
//默认多列排序,example: username desc,createTime asc
protected static final String DEFAULT_SORT_COLUMNS =
private UserInfoManager userInfoM
private final String LIST_ACTION = "redirect:/userinfo";
* 通过spring自动注入
public void setUserInfoManager(UserInfoManager manager) {
this.userInfoManager =
/** 列表 */
@RequestMapping
public ModelAndView index(HttpServletRequest request,HttpServletResponse response,UserInfo userInfo) {
PageRequest&Map& pageRequest = newPageRequest(request,DEFAULT_SORT_COLUMNS);
//pageRequest.getFilters(); //add custom filters
Page page = this.userInfoManager.findByPageRequest(pageRequest);
savePage(page,pageRequest,request);
return new ModelAndView("/userinfo/list","userInfo",userInfo);
/** 进入新增 */
@RequestMapping(value="/new")
public ModelAndView _new(HttpServletRequest request,HttpServletResponse response,UserInfo userInfo) throws Exception {
return new ModelAndView("/userinfo/new","userInfo",userInfo);
/** 显示 */
@RequestMapping(value="/{id}")
public ModelAndView show(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) throws Exception {
UserInfo userInfo = (UserInfo)userInfoManager.getById(id);
return new ModelAndView("/userinfo/show","userInfo",userInfo);
/** 编辑 */
@RequestMapping(value="/{id}/edit")
public ModelAndView edit(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) throws Exception {
UserInfo userInfo = (UserInfo)userInfoManager.getById(id);
return new ModelAndView("/userinfo/edit","userInfo",userInfo);
/** 保存新增 */
@RequestMapping(method=RequestMethod.POST)
public ModelAndView create(HttpServletRequest request,HttpServletResponse response,UserInfo userInfo) throws Exception {
userInfoManager.save(userInfo);
return new ModelAndView(LIST_ACTION);
/** 保存更新 */
@RequestMapping(value="/{id}",method=RequestMethod.PUT)
public ModelAndView update(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) throws Exception {
UserInfo userInfo = (UserInfo)userInfoManager.getById(id);
bind(request,userInfo);
userInfoManager.update(userInfo);
return new ModelAndView(LIST_ACTION);
/** 删除 */
@RequestMapping(value="/{id}",method=RequestMethod.DELETE)
public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) {
userInfoManager.removeById(id);
return new ModelAndView(LIST_ACTION);
/** 批量删除 */
@RequestMapping(method=RequestMethod.DELETE)
public ModelAndView batchDelete(@RequestParam("items") Long[] items,HttpServletRequest request,HttpServletResponse response) {
for(int i = 0; i & items. i++) {
userInfoManager.removeById(items[i]);
return new ModelAndView(LIST_ACTION);
上面是新版本生成器生成的代码,以后也将应用此规则,rest url中增删改查等基本方法与Controller的方法映射规则
=& index()
/userinfo/new
/userinfo/{id}
/userinfo/{id}/edit
=& create()
/userinfo/{id}
PUT =& update()
/userinfo/{id}
DELETE =& delete()
=& batchDelete()
注(不使用 /userinfo/add
=& add() 方法是由于add这个方法会被maxthon浏览器当做广告链接过滤掉,因为包含ad字符)
4. jsp 编写
&form:form action="${ctx}/userinfo/${userInfo.userId}" method="put"&
&/form:form&
生成的html内容如下, 生成一个hidden的_method=put,并于web.xml中的HiddenHttpMethodFilter配合使用,在服务端将post请求改为put请求
&form id="userInfo" action="/springmvc_rest_demo/userinfo/2" method="post"&
&input type="hidden" name="_method" value="put"/&
另外一种方法是你可以使用ajax发送put,delete请求.
5. 静态资源的URL重写
如上我们描述,现因为将default servlet映射至/static/的子目录,现我们访问静态资源将会带一个/static/前缀.
如 /foo.gif, 现在访问该文件将是 /static/foo.gif.
那如何避免这个前缀呢,那就是应用URL rewrite,现我们使用 , 重写规则如下
&urlrewrite&
&!-- 访问jsp及jspx将不rewrite url,其它.js,.css,.gif等将重写,如 /foo.gif =& /static/foo.gif --&
&condition operator="notequal" next="and" type="request-uri"&.*.jsp&/condition&
&condition operator="notequal" next="and" type="request-uri"&.*.jspx&/condition&
&from&^(/.*\..*)$&/from&
&to&/static$1&/to&
&/urlrewrite&
另笔者专门写了一个 RestUrlRewriteFilter来做同样的事件,以后会随着一起发布. 比这个更加轻量级.
并且已经贡献给spring,不知会不会在下一版本发布
在线DEMO地址:
浏览 94734
到处加filter,跑起来一个字慢!!!2个filter而已,你做过大型应用吗?
bonny 写道搞的巨复杂了我觉得让springmvc的 DispatcherServlet不要映射指定url就可以了现有的的语法是&&& &servlet-mapping&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &url-pattern&/&/url-pattern&&&& &/servlet-mapping&增加&&& &servlet&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &servlet-class&org.springframework.web.servlet.DispatcherServlet&&&&&&& &/servlet-class& &&&&&&& &init-param&&&&&&&&&&&& &param-name&notmap&/param-name&&&&&&&&&&&& &param-value&/image/**,/css/**,....&/param-value&&&&&&&& &/init-param&&&&&&&&&&&&&&& &load-on-startup&2&/load-on-startup&&&& &/servlet& 改写DispatcherServlet不要映射着几个url就可以了。个人才疏学浅,个人觉得按照楼主添加static前缀比较的绕,反正我是没看懂~,不过你这样的notmap 配制方法也不行,这样配置我也尝试过了,不行~呵呵,不好意思,我太笨,后来寻思一解决方法,我QQ:,可以加我一起交流哈我试了也没成功 - -|||这样倒是可以&&&& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.css&/url-pattern&&&&& &/servlet-mapping& &&& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.gif&/url-pattern&&&&& &/servlet-mapping&&&&& &&& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.jpg&/url-pattern&&&& &/servlet-mapping&&&&& &&& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.js&/url-pattern&&&& &/servlet-mapping& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.html&/url-pattern&&&& &/servlet-mapping& &servlet-mapping&&&&&&&&& &servlet-name&default&/servlet-name&&&&&&&&& &url-pattern&*.xml&/url-pattern&&&& &/servlet-mapping&
搞的巨复杂了
我觉得让springmvc的 DispatcherServlet不要映射指定url就可以了
现有的的语法是
&&& &servlet-mapping&
&&&&&&& &servlet-name&springmvc&/servlet-name&
&&&&&&& &url-pattern&/&/url-pattern&
&&& &/servlet-mapping&
增加
&&& &servlet&
&&&&&&& &servlet-name&springmvc&/servlet-name&
&&&&&&& &servlet-class&org.springframework.web.servlet.DispatcherServlet
&&&&&&& &/servlet-class&
&&&&&&& &init-param&
&&&&&&&&&&& &param-name&notmap&/param-name&
&&&&&&&&&&& &param-value&/image/**,/css/**,....&/param-value&
&&&&&&& &/init-param&
&&&&&&&&&&&&&& &load-on-startup&2&/load-on-startup&
&&& &/servlet&
改写DispatcherServlet不要映射着几个url就可以了。
个人才疏学浅,个人觉得按照楼主添加static前缀比较的绕,反正我是没看懂~,不过你这样的notmap 配制方法也不行,这样配置我也尝试过了,不行~
呵呵,不好意思,我太笨,后来寻思一解决方法,我QQ:,可以加我一起交流哈
搞的巨复杂了我觉得让springmvc的 DispatcherServlet不要映射指定url就可以了现有的的语法是&&& &servlet-mapping&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &url-pattern&/&/url-pattern&&&& &/servlet-mapping&增加&&& &servlet&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &servlet-class&org.springframework.web.servlet.DispatcherServlet&&&&&&& &/servlet-class& &&&&&&& &init-param&&&&&&&&&&&& &param-name&notmap&/param-name&&&&&&&&&&&& &param-value&/image/**,/css/**,....&/param-value&&&&&&&& &/init-param&&&&&&&&&&&&&&& &load-on-startup&2&/load-on-startup&&&& &/servlet& 改写DispatcherServlet不要映射着几个url就可以了。bonny 写道搞的巨复杂了我觉得让springmvc的 DispatcherServlet不要映射指定url就可以了现有的的语法是&&& &servlet-mapping&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &url-pattern&/&/url-pattern&&&& &/servlet-mapping&增加&&& &servlet&&&&&&&& &servlet-name&springmvc&/servlet-name&&&&&&&& &servlet-class&org.springframework.web.servlet.DispatcherServlet&&&&&&& &/servlet-class& &&&&&&& &init-param&&&&&&&&&&&& &param-name&notmap&/param-name&&&&&&&&&&&& &param-value&/image/**,/css/**,....&/param-value&&&&&&&& &/init-param&&&&&&&&&&&&&&& &load-on-startup&2&/load-on-startup&&&& &/servlet& 改写DispatcherServlet不要映射着几个url就可以了。我试着这么改的,怎么不行呢,请教一下,具体怎么配的呢
如果应用是nginx与apache做的前端,静态资源都被重写后,这两者的解释静态资源的功能不就都废了?这个跟你要不要使用nginx处理静态资源完全没有关系,你完全可以使用nginx拦截掉静态资源的处理请求。
& 上一页 1
浏览: 487434 次
来自: 珠海
能发一下的测试代码吗?
好东西,我就是参考这个!!!
怎么将{key}中的值替换掉
怎么将date的值转换成Timestamp,{inDate?T ...
请问时间类型是Timestamp要怎么查?上班那些事儿(springMVC&URL映射几种配置方式)转载!
普通 URL 路径映射
@RequestMapping(value={"/test1",
"/user/create"}):多个URL路径可以映射到同一个处理器的功能处理
模板模式映射
@RequestMapping(value="/users/{userId}"):{&&&}占位符,&
请求的 URL 可以是& “/users/123456”或
“/users/abcd” ,通过 6.6.5 讲的通过@PathV ariable 可以提取 URI
模板模式中的{&&&}中的&&&变量。
@RequestMapping(value="/users/{userId}/create") : 这样 也 是 可 以 的 ,请
求的 URL 可 以是
“/users/123/create” 。
@RequestMapping(value="/users/{userId}/topics/{topicId}"):这样也是可以的,请求的
URL 可以是
“/users/123/topics/123” 。
Ant 风格的
URL 路径映射
@RequestMapping(value="/users{productId}"):可匹配“/products/abc/abc/123”或“/products/123”
也就是Ant风格和URI模板变量风格可混用;&
此处需要注意的是【4.14 中提到的最长匹配优先】 ,Ant 风格的模式请参考 4.14。
正则表达式风格的 URL
从 Spring3.0 开始支持正则表达式风格的 URL 路径映射, 格式为{变量名:正则表达式}, 这样我们就可以通过 6.6.5
通过@PathV ariable 提取模式中的{&&&:正则表达式匹配的值}中的&&&变量了。
@RequestMapping(value="/products/{categoryCode:\\d+}-{pageNumber:\\d+}")
: 可 以 匹 配
“/products/123-1” ,但不能匹配“/products/abc-1” ,这样可以设计更加严格的规则。
正则表达式风格的 URL 路径映射是一种特殊的
URI 模板模式映射:
URI 模板模式映射是{userId},不能指定模板变量的数据类型,如是数字还是字符串;
正则表达式风格的 URL 路径映射,可以指定模板变量的数据类型,可以将规则写的相当复杂。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。spring MVC项目中,欢迎页首页根路径到底是怎么设置的
0. 问题: 如何改mvc中项目的欢迎页,或者叫做根路径一个东西快弄完了,就剩下一个问题,应该是个小问题。就是mvc项目的欢迎页,怎么给改下呢。这个项目是通过mvn建立的,整个项目的原型就是spring_mvc_jpa_deom_archetype。框架早早建成,即可看到效果。假如项目名称叫做mvn_mvc,其效果如下:访问根路径http://localhost:8080/mvn_mvc/自动跳转到如下路径http://localhost:8080/mvn_mvc/spring/接下来的访问都是带着"spring"这个前缀的http://localhost:8080/mvn_mvc/spring/person/list很显然不想带着这个&spring&前缀,改名或干掉,直接位于/ 下问题就是怎么修改这个默认的路径!1. 缺省的流程先看看缺省的根路径流程:web.xml 中什么没有配置任何有关欢迎页的信息!其实这时等效于如下配置:这个会由Web容器最先访问!//-未指定欢迎页时,缺省等于如下配置。这个应该不同的Web服务器可以设置,但大多数都如此-&welcome-file-list&&welcome-file&index.html&/welcome-file& &welcome-file&index.htm&/welcome-file&&welcome-file&index.jsp&/welcome-file&&/welcome-file-list&而项目目录下,有个index.html文件,进行了跳转:&html&&head&& &metahttp-equiv="Refresh"content="0; URL=spring/"&&/head&&/html&跳转到的url全路径就相当于 http://localhost:8080/mvn_mvc/spring/。这个路径就会由mvc 的DispatcherServlet来处理。为什么呢,是因为web.xml中进行了如下url配置:&servlet&&&& &&& &servlet-name&appServlet&/servlet-name&&&& &&& &servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&&&& &&& &init-param&&&& &&& &&& &param-name&contextConfigLocation&/param-name&&&& &&& &&& &param-value&/WEB-INF/spring/app/servlet-context.xml&/param-value&&&& &&& &/init-param&&&& &&& &load-on-startup&1&/load-on-startup&&/servlet&&servlet-mapping&&&& &&& &servlet-name&appServlet&/servlet-name&&&& &&& &url-pattern&/spring/*&/url-pattern&&/servlet-mapping&此时, http://localhost:8080/mvn_mvc/spring/,根据此规则,就会对应为MVC 路径路由中的 /。也就是HomeController。@ControllerpublicclassHomeController{&&& @RequestMapping(value ="/", method =RequestMethod.GET)&&& publicString home(Model model)&&& {&&& &&& &&& &&& return"home";&&& }}&然后找到对应的home.jsp。整个流程如此。其实缺省为什么设置这么一个spring路径。主要目的是为了提升spring对url的处理效率。spring/下的分支都交由spring来处理,其它的就可以交由web 服务器。如果一切都交给spring处理,我们就要将 / 进行拦截。嗯,一定会由很多静态资源、或者其它动态jsp是另有用途,也会先被spring拦截,然后再当做另外来处理。可以是可以,但是效率上就会觉得多了一步。但是,另一方面,我们在规划url时,可能会尽可能的减短,以方便用户的输入;同时,规划url时,才不会考虑spring的效率呢,也就是url设计先行。这个时候,通常不会有spring这个特定的路径;也就是spring要将就url的规划。也就是要对 / 进行拦截了。2. 如何直接对根路径进行拦截还是直接说流程吧:必须在web.xml中加入如下:&welcome-file-list&&&& &welcome-file&&/welcome-file&&/welcome-file-list&此时,web服务器就知道,根路径不要web服务器来处理,而是由程序自身来处理。这时,index.html也就不起作用了。然后,根路径就被 HomeCtroller拦截了;因为其中配置了对"/"的映射。或者,没有controller,只有view,也可以简化,在servlet的配置文件中加入:&mvc:view-controllerpath="/"view-name="index"/&如果同时都有。反正只会有一个起作用。一般是先扫描的起作用。谁会先扫描到,就是看和&mvc:annotation-driven /&比较,谁在前面。&3. 为什么要去他大爷的终于明白事后诸葛亮真的很容易当,完全忘记了事前猪一样!这个流程很简单,但是在弄清楚之前却浪费了一个周末去解决。还记得到处网上找,或者下源代码断点研究,或者参考例子对照配置。直到今天上午都没有头绪。始终找不到规律,没有把对根路径的拦截给实现。然后中午按时出去吃个饭,吃完饭回来又摆弄下电脑,发现正在运行的那个项目,一切都尽随心所欲,正常的太不正常。难道是mvn tomcat:run 运行时,存在缓存!!!所以每次修改配置文件时,并没有立刻生效。记得之前用mvn tomcat:run或者mvn jetty:run 或者eclipse中的mavent调试,都试过,都不正常的!这次就直接发布到Tomcat6中,每次直接改配置文件,重启,查看。居然就全好了。得出如此结论,第一句话,就是maven的大爷遭殃了。不过其它一些东西也值得借鉴:maven jetty:run运行时,改web.xml 不知道是否会有缓存影响,不能立刻生效;多刷新浏览器。可以看看项目启动日志,里面每个url映射到哪个controller,都有输出。&mvc:annotation-driven /&最好不要多次调用,调用一次,全包扫描一次,会发现日志中出现一遍扫描映射纪录对路径拦截,/ 和 /* 还是有什么区别。参考:http://bluxte.net/musings//servletpath-and-pathinfo-servlet-api-weirdness。&爽了,原谅他大爷了!
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 spring mvc 路径映射 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信