SpringMVC: HTTP Status 405 - JSPs only permit GET POST or HEAD问题的解决办法。
2016-06-05 00:43
676 查看
版本: spring 4.2.6 Tomcat8
JSP:
Controller:
视图解析器:
系统会返回字符串abc。
1.出错时的代码
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>
JSP:
<form action="springmvc/testRest/1" method="post"> <input type="hidden" name="_method" value="PUT" /> <input type="submit" value="Test Rest PUT"/> </form>
Controller:
@RequestMapping("/springmvc") @Controller public class SpringMVCTest { private static final String SUCCESS = "success"; @RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT) public String testRestPUT(@PathVariable(value="id") Integer id) { System.out.println("testRest PUT: " + id); return SUCCESS; } }
视图解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean>
2.出错的原因
发起的请求是个RESTFul风格的请求,调用了RESTFul风格的PUT方法。但是controller里testRestPUT返回的success字符串被映射到success.jsp。因此spring认为这应该是个JSP接口,且JSP接口仅仅支持GET方法和POST方法。所以系统提示提示了这个错误。3.解决方法
为controller里的testRestPUT方法加上@ResponseBody()注解,并且返回一个字符串。关键代码如下:@RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT) @ResponseBody() public String testRestPUT(@PathVariable(value="id") Integer id) { System.out.println("testRest PUT: " + id); return "abc"; }
系统会返回字符串abc。
相关文章推荐
- ubuntu网络配置及文件
- node-http-proxy修改响应结果
- vm克隆虚拟机网络配置
- LAMP(apache/httpd+mysql+php)环境/架构 一键安装脚本
- 【学习日记】第四天-基本工具使用:TCPDUMP
- tcpflow 抓包
- Https和Http之间的区别
- Retrofit2使用方式和源码解析
- UNIX网络编程 第一章
- HTTP数据请求
- kvm 网络模式详解
- COURSERA机器学习笔记2
- 简单封装Http的Get和Post请求
- 基于深度学习的目标检测研究进展
- Android多媒体学习:播放网络上的视频
- 手机开发实战61——TCP/IP协议简介
- C# HttpListener 开发服务器示例
- TCP/IP的流量控制与拥塞控制机制
- 初探tcp和udp
- URLConnection类,HttpURLConnection类的使用和总结