一、问题
在学习Springmvc时,使用Restful风格的url,页面提示404错误。为找到原因,编写一个简单的Restful测试用例如下:
jsp页面:
<a href="user/testRestful.do/1">测试restful</a>
Java代码:
package com.mySSM.controller;
@Controller
@RequestMapping("/user")
public class UserLoginController {<!-- -->
private static Logger logger=LoggerFactory.getLogger(UserLoginController.class);
@RequestMapping("/testRestful.do/{id}")
public String testRestful(@PathVariable("id") Integer id){
System.out.println(id);
return null;
}
}
但是依然提示404异常:The requested resource is not available.
二、原因分析
web.xml配置文件中使用dispatch配置如下:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do/url-pattern>
</servlet-mapping>
当使用上述配置时,找到url对应的controller,Springmvc不认为url请求和@RequestMapping可以对应。
三、解决方法
<url-pattern>*.do/url-pattern>
改为拦截所有请求:
/
这个问题的产生主要是因为普通的http请求拦截一般会有后缀的形式,但是
restful
形式的风格,则没有后缀的方式,所以我们需要springmvc的拦截器的拦截方式修改一下就可以了。