java - SpringMVC:HTTP Status 405 - JSPs only permit GET POST or HEAD
PHP中文网
PHP中文网 2017-04-17 17:45:45
0
3
829

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

认证高级PHP讲师

모든 응답(3)
PHPzhong

당신이 작성한 /restPut/{id} 인터페이스는 Restful 스타일 인터페이스이고, 이 인터페이스의 이름으로 판단하면 이 메소드에서 반환하는 것은 JSP 페이지이므로 Spring은 그렇게 생각합니다. 반환된 콘텐츠를 기반으로 하며 jsp 인터페이스는 http에서 get post 메소드만 사용할 수 있음을 명확하게 알려줍니다.

json 데이터와 같은 데이터를 정말로 반환하려면 @RequestMapping 주석 아래에 @ResponseBody를 추가하세요. 그런 다음 return SUCCESS는 return "{msg:"hello noob!"}"이 됩니다.
그렇지 않으면 인터페이스는 사용하지 마십시오. put 메소드를 사용하고, put 메소드 이름을 지정하지 마십시오

洪涛

mvc의 서블릿 이름을 지정하세요

<필터 매핑>

으아아아

</필터 매핑>

巴扎黑

양식 제출 방법은 게시이지만 매핑을 구성할 때 RequestMethod.PUT으로 설정하세요. 이것이 문제인지 확인하십시오.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿