url-pattern中的/和/*的区别

url-pattern配置为"/"和"/*"的区别

最近在学习springMVC框架,对于其前端控制器的过滤配置url-pattern很困惑。遂百度查各种资料,翻阅各种博客,发现每个人的说法都不一样,很多人的理解都是错的!于是找大牛解惑,大牛就是大牛,一下子就让我明白了。

解:首先大家都知道"/*"可以匹配所有url,包括带扩展名的,一般只用在过滤器上。

而"/"很多人理解成不能拦截带扩展名的,这种理解是错误的!它其实也能拦截“.js”,“.css”,".png"等静态资源的访问。

看官方文档可知,它是tomcat的默认servlet,当其他的url-pattern匹配不上时都会走这个servlet。它除了能够处理静态资源还能够处理HTTP缓存请求,媒体(音频/视频)数据流和文件下载简历。所以如果我们的项目中配置了"/",会覆盖掉tomcat中的default servlet。

url-pattern中的/和/*的区别_第1张图片

tomcat服务器的web.xml配置:

url-pattern中的/和/*的区别_第2张图片

所以当springMVC的前端控制器配置为“/”时,需要在主配置文件中配置放行静态资源。

第一种:

 

 

第二种:

你可能感兴趣的:(java,web)