6

在一个jsp里面我有一个小标题:

<%@ page import="java.util.*"%>

<% HttpSession CurrentSession =
 request.getSession();
 ...
%>

...和一个大 html

<html>
...
</html>

如果我尝试按原样阅读它,则会收到“...超过 65535 字节限制”的错误。我必须将其分解。因为我是 java 新手,所以我不知道该怎么做。你能请指点我的路?

4

3 回答 3

2

JSP 被编译成 servlet 代码,然后编译成实际的 java .class 文件。JSP 代码将被放入一个大的 doGet() 方法中,如果您的 JSP 文件非常大,它将达到 65535 的方法大小限制。该限制来自JVM 规范(“code_length 项的值必须小于大于 65536")。

您应该将文件拆分为多个文件。我不会将它拆分为该线程中提出的不同方法,因为它可以使代码逻辑在这种情况下更加复杂,但是像McDowell 提出的那样为 HTML 部分做一个 jsp:include 。

于 2013-04-30T09:54:44.520 回答
2

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更有效。

于 2013-04-30T07:44:58.783 回答
0

<jsp:include page="foo.html" %>标准操作可用于在运行时包含内容 -请参阅一些随机文档

于 2013-04-30T08:28:40.713 回答