跟着网上的视频敲示例代码,然后就报错了...
Web页面代码:
<!-- REST PUT -->
<form action="test/restPut/2" method="post">
<input type="hidden" name="_method" value="PUT"/>
<input type="submit" value="REST PUT" />
</form>
Controller代码:
@Controller
@RequestMapping("/test")
public class SpringRequestMapping
{
// 成员属性;
private final String SUCCESS = "success";
/**
* 功能描述:测试RESTful PUT;
* @param id
* @return
*/
@RequestMapping(value = "/restPut/{id}", method = RequestMethod.PUT)
public String restPut(@PathVariable("id") Integer id)
{
System.out.println("RESTful PUT:" + id);
return SUCCESS;
}
}
web.xml
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
新手求助,麻烦大神指点一二,问题出在哪了???
你写的/restPut/{id}接口是restful风格接口,而且从这个接口的名字上看是个数据接口,而你在这个方法中返回的是jsp页面,所以spring根据返回内容认为这是一个jsp页面接口,而且明确告诉你jsp接口只能用http 中的get post方法。
如果你确实是要返回数据,比如json数据,在@RequestMapping标注下面标注添加@ResponseBody,然后return SUCCESS 变为return “{msg:"hello noob!"}”
否则你接口就不要用put方法,也不要起个put方法名字
指定mvc 的servlet 名称
<filter-mapping>
</filter-mapping>
你的form的提交方式是post,但是配置映射时置为RequestMethod.PUT。你看看是不是这个问题。