在一个jsp里面我有一个小标题:
<%@ page import="java.util.*"%>
<% HttpSession CurrentSession =
request.getSession();
...
%>
...和一个大 html
<html>
...
</html>
如果我尝试按原样阅读它,则会收到“...超过 65535 字节限制”的错误。我必须将其分解。因为我是 java 新手,所以我不知道该怎么做。你能请指点我的路?
在一个jsp里面我有一个小标题:
<%@ page import="java.util.*"%>
<% HttpSession CurrentSession =
request.getSession();
...
%>
...和一个大 html
<html>
...
</html>
如果我尝试按原样阅读它,则会收到“...超过 65535 字节限制”的错误。我必须将其分解。因为我是 java 新手,所以我不知道该怎么做。你能请指点我的路?
JSP 被编译成 servlet 代码,然后编译成实际的 java .class 文件。JSP 代码将被放入一个大的 doGet() 方法中,如果您的 JSP 文件非常大,它将达到 65535 的方法大小限制。该限制来自JVM 规范(“code_length 项的值必须小于大于 65536")。
您应该将文件拆分为多个文件。我不会将它拆分为该线程中提出的不同方法,因为它可以使代码逻辑在这种情况下更加复杂,但是像McDowell 提出的那样为 HTML 部分做一个 jsp:include 。
JSP 被转换为普通的 Servlet java 源代码,并且某些生成的方法太大,因为方法长度有 64 KB 的限制(在字节码上)。
如果可能的话,使用动态包含更改静态包含(真正嵌入其他 JSP 源)。
解决方案(并且可能是好的风格)也引入了一些方法来移动通用代码的片段。例如生成一个 HTML 表格行<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");
%>
PS上面的方法规模太小,省不了多少,拿大块做个类似的方法createResultsTable
更有效。
<jsp:include page="foo.html" %>
标准操作可用于在运行时包含内容 -请参阅一些随机文档。