springMVC No mapping found for HTTP request with URI

问题:导致WEN-INF外的资源无法访问

解决办法:将/*改为/

1、<url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
2.<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
3、url-pattern详解
在web.xml文件中,以下语法用于定义映射:
1) 以”/’开头和以”/*”结尾的是用来做路径映射的。
2) 以前缀”*.”开头的是用来做扩展映射的。
3)“/” 是用来定义default servlet映射的。
4)剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action
所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

为什么形如.jsp就不会被<url-pattern>/</url-pattern>拦截,而静态资源如.jpg .png就会被拦截呢? .jsp和.jpg不是都是形如.*的嘛,有什么不同嘛?

找到答案了,/和/*一样都是匹配所有,但是因为/的优先级最低,因为servlet内置了.jsp的拦截器,优先级更高,原文如下:“/”是servlet中特殊的匹配模式,切该模式有且仅有一个实例,优先级最低,不会覆盖其他任何url-pattern,只是会替换servlet容器的内建default servlet ,该模式同样会匹配所有request。配置“/”后,一种可能的现象是myServlet会拦截诸如http://localhost:8080/appDemo/user/addUser.actionhttp://localhost:8080/appDemo/user/updateUser的格式的请求,但是并不会拦截http://localhost:8080/appDemo/user/users.jsp、这是应为servlet容器有内置的“*.jsp”匹配器,而扩展名匹配的优先级高于缺省匹配,所以才会有上述现象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值