搜尋

首頁  >  問答  >  主體

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>

新手求助,麻烦大神指点一二,问题出在哪了???

PHP中文网PHP中文网2807 天前848

全部回覆(3)我來回復

  • PHPz

    PHPz2017-04-17 17:47:45

    你寫的/restPut/{id}接口是restful風格接口,而且從這個接口的名字上看是個數據接口,而你在這個方法中返回的是jsp頁面,所以spring根據返回內容認為這是一個jsp頁面接口,而且明確告訴你jsp接口只能用http 中的get post方法。

    如果你確實是要返回數據,例如json數據,在@RequestMapping標註下面標註添加@ResponseBody,然後return SUCCESS 變為return “{msg:"hello noob!"}”
    否則你接口就不要用put方法,也不要取一個put方法名字

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 17:47:45

    指定mvc 的servlet 名稱

    <filter-name>HiddenHttpMethodFilter</filter-name>
    <servlet-name>mcpMvc</servlet-name>

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:47:45

    你的form的提交方式是post,但設定映射時置為RequestMethod.PUT。你看看是不是這個問題。

    回覆
    0
  • 取消回覆