升級到tomcat8碰到的問題總結

一.url中特殊字符問題html

    根據rfc規範,url中不容許有 |,{,}等特殊字符,但在實際生產中仍是有些url有可能攜帶有這些字符,特別是|仍是較爲常見的。在tomcat升級到7之後,對url字符的檢查都變嚴格了,若是出現這類字符,tomcat將直接返回400狀態碼。java

    後來有人對此提出了異義,見:    https://bz.apache.org/bugzilla/show_bug.cgi?id=60594web

    通過一番討價還價,tomcat的開發人員增長一項設置,容許配置在url能夠出現的特殊字符,但也僅限於|,{,}三種,見:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Otherapache

    該項設置在如下版本的tomcat中有效:tomcat

    - 8.5.x for 8.5.12 onwardsapp

    - 8.0.x for 8.0.42 onwardsjsp

    - 7.0.x for 7.0.76 onwardspost

二.jso語法兼容問題:ui

若是使用到了jsp,則語法方面須要配置一下兼容:在catalina.properties裏面加上:this

  •  org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
  • org.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false
  • org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true

三.server.xml配置項含義變化問題:

  • server.xml配置裏,maxPostSize="0"在tomcat8表示不接收post數據,-1才表示不限制。

四.jsp編譯問題:

  • jsp編譯報錯:The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files,這是由於編譯器ecj-3.7版本過低,須要升級到ecj-4以上,如ecj-4.6.3.jar。若是回退到tomcat6,則須要回滾這個jar包版本。

五.jstl支持的問題:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application  

  • 檢查tomcat是否缺乏jstl.jar,standard.jar,將其放在應用下面。
  • 檢查web.xml聲明的版本: 2.5 ->1.2JSTL  或者 2.4->1.1JSTL

另外:
JSTL 1.0 的聲明是:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %>
JSTL1.1 的聲明是:
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>

相關文章
相關標籤/搜索