SpringMVC报错:HTTP Status 405 - JSPs only permit GET POST or HEAD
错误描述
如果项目是运行在 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 页面。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)