任何JSP异常都发送500错误

时间:2012-03-29 19:18:06

标签: java jsp tomcat el

我的JSP页面里面有一些EL。不幸的是,EL表达式抛出了异常。 因此,当系统记录异常并发送我的电子邮件时,用户会看到页面的一半。

是否可以将容器(tomcat)配置为首先处理jsp页面,然后将其显示给用户并在出现异常时显示500错误页面?

错误页面比部分呈现页面要好得多。

是的,我知道模板引擎应该处理viewmodel,除了访问器/ mutator之外什么也不应该抛出,但是现在我必须访问EL中的一些业务(域模型)对象。

3 个答案:

答案 0 :(得分:1)

EL表达式评估不应该抛出异常。

如果发生这种情况,那么这只会意味着您的预处理代码中存在错误或者您的getter方法的设计方式。

预处理代码(读取:前端控制器servlet)必须绝对确保页面需要访问/存在的任何数据都已在范围内。 EL表达式引用的getter方法除了返回已经准备好的/已加载的属性外,不能做任何其他事情。

答案 1 :(得分:0)

您可以使用JSTL

<c:catch> 

标签。一个例子:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
 <c:catch var="exp">
             ${.}
 </c:catch>
 <c:if test="${exp != null}" >
      Expection was thrown in EL
 </c:if>

答案 2 :(得分:0)

您可以使用web.xml为您的应用配置500错误页面。

<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/error-pages/500.jsp</location>
</error-page>

将其放在web.xml文件的<web-app>...</web-app>内。对于任何服务器端异常,它会将用户重定向到500.jsp页面