Spring MVC 中配置 / 和 /* 到底有什么区别

Mr_Kail 发布于 2014/04/21 18:20
阅读 9K+
收藏 1

参考:

http://www.coderanch.com/t/364782/Servlets/java/key-difference-url-pattern

http://hi.baidu.com/atell/item/522112d3db45081fd90e44e1


网上有类似解答,但是还是不太理解,

大致意思是 / 是配置默认servlet

/* 匹配 类似*.jsp 等有后缀的URL

但是,不管/ 还是 /* ,Spring 的InternalResourceViewResolver 都能拦截到 index.html, 但是配置/* 是404,配置/ 就能访问到,好费解呀。

加载中
0
CloudArchitect
CloudArchitect

severlet的规范而已。

0
yongzhong
yongzhong

+1 我也想问这个问题

0
alexgaoyh
alexgaoyh

/*表示的是所有,即针对所有操作,请求action被拦截,转到jsp页面也被拦截;

/的话,大部分是用于现在的restful风格的操作。

如果是/*是404的话,确定一下你的静态文件操作是否处理了·

形如: <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/>

alexgaoyh
alexgaoyh
回复 @3kqing : 根本没有走到spring的配置里面去。 从servlet3开始,多增加了两个url-pattern支持。 4.空字符串("")格式,这个好像是特殊的映射,映射到整个访问根目录的请求,文档上说的是“application's context root”,不是当前的context根目录。 5.不带有正则的精确匹配。 具体的可以看servlet的标准文档。servl
alexgaoyh
alexgaoyh
回复 @3kqing : servlet 3之前版本的配置,servlet只接受3种url-pattern。 1.以"/"开头并以"/*"结尾的,也就是url-pattern里面至少出现两个"/"。比如"/user/*"。 2.以"*."为开头的,也就是抓取后缀名。比如"*.user"。 3.单独的一个"/",网站的默认处理servlet。 所以你填写的"/*"并不符合servlet的抓取
Skqing
Skqing
我的也是
Mr_Kail
Mr_Kail
静态文件可以通过resources 配置,正常访问,但是,controller是404
0
千斤难买春秋醉
千斤难买春秋醉

filter和servlet的映射是不同的

springmvc用的是一个servlet来作为中心控制器。

0
逝水fox
逝水fox

区别在于这两个配置 request.getServletPath()的返回值不同

返回顶部
顶部