jsp檔案過大,is exceeding 65535 bytes limit

讓丄帝愛伱發表於2020-12-01
Generated servlet error:The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit。
原因: jsp的本質是servlet,tomcat編譯時會先將他轉換成java程式碼,然後再進行編譯。 你的jsp編譯成生成的檔案太大,導致報錯。

空行的去除沒有幫助,減少引用的js會有小幫助,但在jsp本身很大的時候作用有限。嘗試修改應用伺服器的web.xml檔案(在tomcat下位於conf目錄下,在jboss下位於server\default\deploy\jbossweb.sar目錄下 ),修改如下圖所示之處,加入紅框內的初始化引數。 這樣確實可以成功,但是,如果你把生產環境下的tomcat都更改,那不是很費時間,還可能出現其他的問題

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    ...
    <init-param>
        <param-name>mappedfile</param-name>
        <param-value>false</param-value>
    </init-param>
    ...
</servlet>

重啟Tomcat。
1、這樣做只是讓Tomcat不為JSP每行都新增print語句,但是實際上,當檔案達到一定程度,還是會發生錯誤,所以最根本的還是儘量減小JSP大小。
TIP:mappedfile : 是否對每個輸入行都用一條print語句來生成靜態內容,以方便除錯。預設為true。


所以,還有其他的修改方法,思路就是減少jsp頁面的大小。
我們可以將jsp頁面的標籤宣告拿到web.xml中去宣告。

  1. 刪除jsp頁面中的C標籤和fmt標籤的引入。 即刪除這句話
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
  1. 找到web.xml,增加c標籤和fmt標籤的配置。
<jsp-config>
  <taglib>
   <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
   <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
  </taglib>
  <taglib>
   <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
   <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
  </taglib>
 </jsp-config> 

另一種方法:將JSP的一些程式碼分離開來抽取成一個JSP,然後動態引入 <jsp:include page=”檔案路徑/檔名 ”/>


我曾七次鄙視自己的靈魂:
第一次,當它本可進取時,卻故作謙卑;
第二次,當它空虛時,用愛慾來填充;
第三次,在困難和容易之間,它選擇了容易;
第四次,它犯了錯,卻藉由別人也會犯錯來寬慰自己;
第五次,它自由軟弱,卻把它認為是生命的堅韌;
第六次,當它鄙夷一張醜惡的嘴臉時,卻不知那正是自己面具中的一副;
第七次,它側身於生活的汙泥中雖不甘心,卻又畏首畏尾。

相關文章