在jsp中我有一个小标题:
<%@ page import="java.util.*"%>
<% HttpSession CurrentSession =
request.getSession();
...
%>
......还有一个很棒的HTML
<html>
...
</html>
如果我尝试按原样读取它,我会收到“...超过65535字节限制”的错误。我必须将其分解。因为我是java的新手,我无法弄清楚如何做到这一点你能指点我的方式吗?
答案 0 :(得分:2)
JSP被转换为普通的Servlet java源,并且一些生成的方法太大,因为方法长度上有64 KB的限制(在字节代码上)。
如果可能,使用动态包含更改静态包括(实际嵌入其他JSP源)。
解决方案(可能是好的风格)也引入了一些方法,一般代码的部分被移动。例如,使用<tr>
:
<%@
void tableRow(String... cellValues) {
%><tr><%
for (String cellValue : cellValues) {
%> <td><%= cellValue %></td>
<%
}
%></tr>
<%
}
%>
...
<%
tableRow("one", "unu", "un");
tableRow("two", "du", "deux");
tableRow("three", "tri", "trois");
%>
P.S。
以上方法规模太小,无法节省太多,占用大块并创建方法
像createResultsTable
更有效。
答案 1 :(得分:2)
JSP被编译成servlet代码,然后编译成实际的java .class文件。 JSP代码将被放入一个大的doGet()方法中,如果您的JSP文件非常大,它将达到65535的方法大小限制。该限制来自JVM specification(“code_length项的值必须小于65536“)。
您应该将文件拆分为多个文件。我不会将它拆分为此线程中提出的不同方法,因为它可以使代码逻辑在这种情况下更加复杂,但是对于像proposed by McDowell这样的HTML部分执行jsp:include。 / p>
答案 2 :(得分:0)
<jsp:include page="foo.html" %>
标准操作可用于在运行时包含内容 - see some random documentation。