我创建了这样一个jsp页面:
<% Object myName = session.getAttribute("name");
if(myName == null)
{ String redirectURL = "http://www.google.com";
response.sendRedirect(redirectURL);
}
%>
<html> ... some content ... </html>html内的内容大约是100 k。现在当我试图在netbean/glassfish中编译和运行它时,我收到了一条错误消息:
constant string too long
out.write("<html>.......</html>我在某个地方读到,有64k的限制。但是我根本没有使用"out.write“函数,如您所见,jsp部分非常小。这是怎么发生的,我该怎么解决?
我想要实现的是首先检查会话是否有效,如果不是,则重定向。如果是,则显示内容。内容相当大而且是静态的,但我无法控制它。总之我能做到这一点?
发布于 2013-01-10 16:58:46
但我根本不使用"out.write“函数
JSP在内部使用它。您知道,JSP文件是在"JSP编译“步骤中转换为扩展HttpServlet的Java类的,一切都以Java代码告终。签出服务器工作文件夹中生成的代码,以便自己查看。
使用运行时JSP包括使用<jsp:include>将大片段分割成单独的JSP文件。
例如。
<body>
<jsp:include src="/WEB-INF/header.jsp" />
<jsp:include src="/WEB-INF/menu.jsp" />
<p>Content</p>
<jsp:include src="/WEB-INF/footer.jsp" />
</body>或者,如果这不适合具体的功能需求,另一种方法是将HTML内容放在自己的some.html文件中,并由JSTL <c:import>引用,条件是HTML内容是真正的静态的(即它不包含任何JSP、标记、表达式等)。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
...
<body>
<c:import url="some.html" />
</body>这样,它就不会成为JSP源代码的一部分。
无关的与具体问题无关,您的重定向逻辑缺少一条return语句。在执行重定向时,所有剩下的JSP代码仍将被调用。另外,如果您在所有的https://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/3180202#3180202文件上重复这个servlet filter,您会问您是否能够更好地使用servlet filter来完成这项工作。
https://stackoverflow.com/questions/14263158
复制相似问题