首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSP常量字符串太长

JSP常量字符串太长
EN

Stack Overflow用户
提问于 2013-01-10 16:56:18
回答 1查看 1.8K关注 0票数 0

我创建了这样一个jsp页面:

代码语言:javascript
复制
 <%  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中编译和运行它时,我收到了一条错误消息:

代码语言:javascript
复制
constant string too long
out.write("<html>.......</html>

我在某个地方读到,有64k的限制。但是我根本没有使用"out.write“函数,如您所见,jsp部分非常小。这是怎么发生的,我该怎么解决?

我想要实现的是首先检查会话是否有效,如果不是,则重定向。如果是,则显示内容。内容相当大而且是静态的,但我无法控制它。总之我能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 16:58:46

但我根本不使用"out.write“函数

JSP在内部使用它。您知道,JSP文件是在"JSP编译“步骤中转换为扩展HttpServlet的Java类的,一切都以Java代码告终。签出服务器工作文件夹中生成的代码,以便自己查看。

使用运行时JSP包括使用<jsp:include>将大片段分割成单独的JSP文件。

例如。

代码语言:javascript
复制
<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、标记、表达式等)。

代码语言:javascript
复制
<%@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来完成这项工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14263158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档