如何提前停止处理JSP?

时间:2009-09-28 13:37:27

标签: java jsp

我有一个JSP页面,它调用一个函数并检查它的返回值。如果返回值不为null,则JSP页面继续使用它。如果返回值为空,我希望JSP页面的处理停止(这是因为该函数将在返回null对象之前执行重定向。此外,JSP代码的其余部分显然使用此对象,并且将获得如果函数返回null,则返回null指针异常。

所以我的问题是,停止加载JSP页面的正确方法是什么?我可以这样做:

if (Func() == null) { return; }

或者在JSP中间使用返回而不是更简洁的方法来解决这个问题?

由于

5 个答案:

答案 0 :(得分:6)

无论如何尽早终止JSP的处理,我建议在处理显示之前在servlet中处理流控制,并根据函数调用的结果切换到适当的JSP。

我倾向于纯粹使用JSP来显示bean(或多个)的内容,并且所有逻辑都包含在调用servlet中。通过这样做,您可以更清晰地分离组件之间的关注点,以及更易于理解和调试的系统。

答案 1 :(得分:3)

自2.0以来,有一种标准方式:

throw new javax.servlet.jsp.SkipPageException();

答案 2 :(得分:2)

Brian的回答是一个很好的建议,但它没有清楚地回答这个问题。

答案是肯定的。大量的JSP被转换为一个方法_jspService,它在JSP被“执行”时运行,并且因为它是一个常规函数,它在finally块中进行清理,所以返回是安全的。

答案 3 :(得分:1)

如果你真的想要这样做我会建议如下


..some jsp..
<%
   if (iWantToKeepProcessing) {
%>
..someother stuff..

<%
}
%>

我不得不同意Brian的意见,并说如果可能的话你应该避免进入JSP。如果您正在处理直接针对动态JSP文件而不是控制器/ servlet的post / get,则可能无法使用此功能。

答案 4 :(得分:0)

您可以使用 JSTL标记

<c:if test="condition">
   bodytext
</c:if>

在加载页面/进程的控制上,哪一项优于<% if(condition) { %> bodytext <% } %>

相关问题