Tomcat 8.x版本不支持使用HTTP PUT方式访问JSP页面的问题

Easter79
• 阅读 762

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

在Tomcat自动产生的所访问JSP页面的java文件(X:\apache-tomcat-8.0.20\work\Catalina\localhost\<PROJECT_CONTEXT_PATH>\org\apache\jsp\[SUB_DIRECTORY\])中的 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException 方法中可以看到如下代码:

    final java.lang.String _jspx_method = request.getMethod();
        if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
        return;
    }

上面的问题是在升级Struts版本并且使用Tomcat 8.x版本时发现的,开始以为是升级Struts版本的问题,由于产生问题的地方是在Ajax调用中(没有界面),只报了405错误码出来(后来在JS代码中输出响应内容到页面上就可以很清晰地看到问题所在了),结果搜索了一圈之后,才发现是Tomcat版本问题。已验证“使用Tomcat 6.x、7.x版本没有此问题”。

Since JSP 2.3 (Tomcat 8) only supported method for JSP is GET POST or HEAD

引用来自于: http://stackoverflow.com/questions/23886941/http-status-405-jsps-only-permit-get-post-or-head

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
springboot2.0之jsp整合
  这篇博客是学习springboot整合各种三方框架后基本的CRUD操作。  1,整合jsp     注意springboot默认是不支持jsp的,所以我们利用springboot集成jsp时,一定要创建成一个war类型项目,同时要引入外部tomcat。    如项目结构:    !(https://oscim
Easter79 Easter79
3年前
springMVC实现登陆
页面打开跳转到登陆页面登陆成功跳转到成功页面登陆失败再次返回登录页面,并增加提示信息1、首页跳转到登陆页面  Tomcat服务器启动时默认加载WEBINF下的index.jsp,可以通过修改xml配置的方式来改变Tomcat这一默认行为。这里使用springMVC来实现这个功能。  第一种实现
Wesley13 Wesley13
3年前
java web路径之忽略项目名
前言项目名称为portal,主页面Index.jsp!(https://static.oschina.net/uploads/space/2016/1108/120206_zfJH_2887518.png)url访问主页面路径:http://localhost:8080/portal/index.jsp期望url
Wesley13 Wesley13
3年前
Java Web学习总结(16)——JSP的九个内置对象
一、JSP运行原理  每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个\_jspServlet(实质上也是一个servlet),然后按照servlet的调用方式进行调用。  由于JSP第一次访问时会翻译成servlet,所以第一次访
Easter79 Easter79
3年前
Tomcat8及之后版本出现的The valid characters are defined in RFC 7230 and RFC 3986
<divclass"htmledit\_views"id"content\_views"<p升级tomcat8及更高版本带来的问题</p<p由于使用get请求,链接中参数携带特殊字符,由于Tomcat的新版本中增加了一个新特性,就是严格按照RFC3986规范进行访问</p<h2<aname"t0"</a解析,而RFC
Stella981 Stella981
3年前
Spring Boot 无法访问JSP页面
Case使用springboot框架开发一个webapp时,通常都会引入dependency:springbootstarterweb或springbootstartertomcat,其默认使用tomcat作为web容器。使用该配置作为SpringBootApp运行时,访问RestAPI没问题,但是却无法访问JSP页面。
Stella981 Stella981
3年前
SpringBoot使用JSP(官网Demo)
最开始接触java的时候,前端页面基本都是用jsp来写,最近公司项目要使用SpringBoot重构,查看SpringBoot文档,发现SpringBoot不建议使用JSP,因为jsp在使用内嵌servlet容器时会有一些限制!(https://img2018.cnblogs.com/blog/562030/201901/56203020190120
Wesley13 Wesley13
3年前
JavaWeb学习总结(十七)——JSP中的九个内置对象
一、JSP运行原理  每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个\_jspServlet(实质上也是一个servlet),然后按照servlet的调用方式进行调用。  由于JSP第一次访问时会翻译成servlet,所以第一次访
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k