java - SpringMVC:HTTP Status 405 - JSPs only permit GET POST or HEAD

查看:170
本文介绍了java - SpringMVC:HTTP Status 405 - JSPs only permit GET POST or HEAD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

跟着网上的视频敲示例代码,然后就报错了...
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方法名字

这篇关于java - SpringMVC:HTTP Status 405 - JSPs only permit GET POST or HEAD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆