重新加载jsp页面时,超过字节限制会出现问题吗?

6

我是jsp的新手。我遇到了一个错误:方法 _jspService(HttpServletRequest, HttpServletResponse) 的代码超过了65535个字节的限制。

我正在使用静态包含,例如:

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

但是页面无法加载... 我还会尝试动态包含,例如

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

没有运气。

任何帮助都将不胜感激。

7个回答

14

我们通过在Tomcat配置中将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的限制,但有助于使生成的代码更短,从而使该限制发生得更晚


4
我发现上述答案的解决方案更好,即添加代码,而不是创建多个文件。
<init-param>
        <param-name>mappedfile</param-name>
        <param-value>false</param-value>
    </init-param>

将"JspServlet"添加到Web.XML文件中。但我在我的Web.XML文件中没有找到"JspServlet",并且发现了一个参考链接,并将完整的映射放置。

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

这对我很有帮助,希望能帮到其他人。


帮助了我。谢谢 :) - Anu Shibin Joseph Raj
它确实也帮助了我。谢谢。 - AndRaGhu

2

自昨天以来,我一直遇到这个问题,我使用动态包含<jsp:include将我的JSP分成两个JSP,但仅此还不足以帮助我。请确保您还添加了所有的标签库和导入语句。<jsp:include的工作原理类似于函数,所以如果您要将JSP拆分成两个或更多,则需要在原始JSP中具有相同的导入。希望它对您有用,对我有效。


1

当您运行Jsp时,默认情况下它会转换为Java代码。在Java中,一个单独的try catch循环只能容纳65K的代码。因此,请不要在单个jsp中放置太多代码,而是可以将多个Jsp文件导入到单个jsp文件中。 否则,请使用JSTL。


0

我在Tomcat的web.xml文件中添加了trimSpaces=true作为init-param,问题得到了解决。


0
如果有其他人也遇到了这个问题,我的情况是一个JSP文件包含了多个其他JSP文件(其中一些被包含了多次),所以只需检查所有内容是否都被正确地包含一次即可解决问题。

-1

将一些逻辑从JSP页面中移出并放入专用的bean中。

每个Java方法的65k字节限制是非常高的,只有非常长的方法才会超过这个限制。

还要注意任何强常量的长度都不包括在该方法中,因此您在单个方法中有一些荒谬的逻辑(注意:JSP编译为Servlets,其中_jspService方法包含JSP内容的主要部分)。

所以您的逻辑太多了。您的JSP中根本不应该有任何逻辑(仅输出渲染)。

还要注意,在这种情况下,<%@ include<jsp:include只是两种不同的方式,所以这不会有任何区别。


你好,1)我该如何制作静态和动态包含?动态包含能解决这个问题吗?2)什么是专用bean?有链接吗?请帮忙。 - Kanagavelu Sugumar
"<%@ include %>" 和 "jsp:include" 实际上是非常不同的东西。后者只是引用目标 JSP 文件而不是包含它,并且它确实解决了 65k 字节的问题。 - pvgoran
此外,如果一个页面非常复杂,并且需要呈现大量实体类型(无论是在HTML中还是JS中),即使没有实际的“业务逻辑”(计算、操作、数据库访问),它也可能超出限制。 - pvgoran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接