2011-09-21 70 views
3

進出口新的jsp.I'm得到錯誤是方法 _jspService的代碼(HttpServletRequest的,HttpServletResponse的)是超過65535個字節限制字節限制當重新加載一個jsp頁面時超過了問題?

我使用靜態包括諸如

<%@ include file="/jsp/common/createScriptMsg.jsp" %> 

但頁面沒有加載... 我也想嘗試dynamiac包括如

<jsp:include page="/jsp/common/createScriptMsg.jsp" /> \ 

沒有運氣..

任何幫助將appriciated。

回答

-1

將一些邏輯從您的JSP頁面移入專用的bean。

的每個Java方法65K字節的限制是出奇的高只有非常,非常長的方法超過它。

還要注意,任何強大的常量的長度包括在該方法中,所以你只需要在一個方法(注意邏輯的一些荒唐量:JSP被編譯成Servlet,wher的_jspService方法持有主要的JSP內容)。

所以你只是有太多的邏輯。根本不應該在JSP中擁有任何邏輯(僅輸出渲染)。

另請注意,在這種情況下,<%@ include<jsp:include只是兩種不同的方式來做同樣的事情,所以不會有所作爲。

+0

嗨,1)我如何使靜態和動態包括?動態包括將解決這個問題? 2)什麼是專用豆類?任何鏈接?請幫助。 –

+0

'<%@ include%>'和''實際上是非常不同的東西。後者只是引用目標JSP文件而不是包含它,它*會解決65k字節的問題。 – pvgoran

+0

另外,如果一個頁面很複雜並且需要處理大量需要呈現的實體類型(在HTML中,在JS中,無論如何),即使沒有實際的「業務邏輯」(計算,操作,數據庫訪問)。 – pvgoran

1

當您運行Jsp時,默認情況下它會轉換爲java代碼。而在Java中,在一個try catch循環中只能容納65K的代碼。因此,不要在單個jsp中放置太多代碼,而是可以將一定數量的Jsp文件導入到單個jsp文件中。 或者使用JSTL。

11

我們通過在我們的Tomcat-Config中將JspServlet的mappedfile設置爲false來「固定」此處。 轉到%TOMCAT_HOME%/conf/web.xml及以下的init-PARAM添加到JspServlet:

<init-param> 
     <param-name>mappedfile</param-name> 
     <param-value>false</param-value> 
    </init-param> 

這不解決64 KIB限制,但在它發生後來因爲生成的代碼短則這種方式幫助。

0

如果有人絆倒了這個,就我而言,它只是一個JSP,其中包含多個包含其他JSP文件的聲明(並且其中一些不止一次),所以只需檢查一切是否包含一次就解決了問題。

1

自從昨天我一直有這個問題,我把我的JSP分成兩個使用動態包括<jsp:include的JSP,但它本身並沒有幫助我,請確保您還添加了所有標記庫和導入語句。 <jsp:include就像一個函數一樣工作,所以如果你在兩個或多個JSP中分解你的JSP,它們需要你在原始JSP中擁有的相同導入。希望它適合你,它爲我工作。

2

而是使多個文件,我發現上述答案的解決方案更良好的I-E添加

<init-param> 
     <param-name>mappedfile</param-name> 
     <param-value>false</param-value> 
    </init-param> 

到web.xml文件。但我沒有找到「JspServlet」在我的web.xml文件中,發現了ref link並置於完整映射

<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> 

爲我工作。希望這會幫助某人。

0

我已經在tomcat web xml中添加了trimSpaces true作爲init-param,它解決了這個問題。

相關問題