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

发布时间 2023-09-13 22:34:50作者: Binge-和时间做朋友

错误描述

如果项目是运行在 Tomcat 8 及以上版本,浏览器发出的 PUT 请求和 DELETE 请求可以被页面控制器(Controller)成功接收到,但是返回 JSP 页面则会报 HTTP 405 的错误提示:"消息 JSP 只允许 GET、POST 或 HEAD。Jasper 还允许OPTIONS"。

原因分析

原因是 Tomcat 按照 JCP 规范(JSP2.3版本)的规定,从 Tomcat8.x 版本开始,不再支持以 HTTP PUT 方式访问 JSP 页面,仅支持 GET、POST 和 HEAD 方式。

解决方案

1、tomcat换到7.0以及以下版本

切换 tomcat 版本显然并不好,不建议采用

2、在方法上标注 @ResponseBody

@ResponseBody 注解通常是用来返回 JSON 数据的,这样就不会跳转视图的 JSP 页面了。如果你确实是要返回数据,这样写当然没有问题,这也是比较规范的一种写法。

3、请求重定向给一个 Controller的方法,再返回 jsp 页面

既然不能直接跳转到 jsp 页面,我们就可以将请求重定向给一个 controller 方法,再通过该方法跳转到 jsp 页面。