来自 Servlet 响应错误的动态错误页面
Dynamic Error Page from Servlet Response Errors
我正在尝试使用 HttpServletResponse
函数 sendError(int,string)
向 JSP 发送状态代码和自定义错误消息,这样我就可以获得一个动态错误页面(而不是每个错误 code/Java 异常的许多特定错误页面)。但是,我似乎无法访问自定义消息、错误类型和堆栈跟踪。但是我可以访问 URI 和错误代码。我正在发送这样的错误:
response.sendError(HttpServletResponse.SC_BAD_REQUEST,"Some_Message");
我正在尝试通过这样的方式获得回复:
<div class="container">
<div class="table-responsive">
<table id="table" class="display">
<tbody>
<tr>
<td><b>Error:</b></td>
<td>${pageContext.errorData.throwable.cause}</td>
</tr>
<tr>
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<td><b>Error Message:</b></td>
<td>${pageContext.errorData.throwable.message}</td>
<tr>
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr>
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" items="${pageContext.errorData.throwable.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</tbody>
</table>
</div>
</div>
我的页面描述符设置如下:
<%@page contentType="text/html" pageEncoding="UTF-8" isErrorPage="true"
import="java.io.*"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
编辑:我应该澄清一下,我知道除非实际抛出异常,否则不会打印堆栈跟踪和异常名称,我对打印自定义消息更感兴趣,因为这对于在问题发生时进行调试很有用在标准 testing/deployment 程序之后。
所以只需要将请求对象的消息指定为属性,然后从错误页面访问该属性
request.setAttribute("err_msg",""Some_Message"");
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
我真的不记得 JSTL,但最后访问请求范围上下文,并搜索 "err_msg"
我正在尝试使用 HttpServletResponse
函数 sendError(int,string)
向 JSP 发送状态代码和自定义错误消息,这样我就可以获得一个动态错误页面(而不是每个错误 code/Java 异常的许多特定错误页面)。但是,我似乎无法访问自定义消息、错误类型和堆栈跟踪。但是我可以访问 URI 和错误代码。我正在发送这样的错误:
response.sendError(HttpServletResponse.SC_BAD_REQUEST,"Some_Message");
我正在尝试通过这样的方式获得回复:
<div class="container">
<div class="table-responsive">
<table id="table" class="display">
<tbody>
<tr>
<td><b>Error:</b></td>
<td>${pageContext.errorData.throwable.cause}</td>
</tr>
<tr>
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<td><b>Error Message:</b></td>
<td>${pageContext.errorData.throwable.message}</td>
<tr>
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr>
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" items="${pageContext.errorData.throwable.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</tbody>
</table>
</div>
</div>
我的页面描述符设置如下:
<%@page contentType="text/html" pageEncoding="UTF-8" isErrorPage="true"
import="java.io.*"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
编辑:我应该澄清一下,我知道除非实际抛出异常,否则不会打印堆栈跟踪和异常名称,我对打印自定义消息更感兴趣,因为这对于在问题发生时进行调试很有用在标准 testing/deployment 程序之后。
所以只需要将请求对象的消息指定为属性,然后从错误页面访问该属性
request.setAttribute("err_msg",""Some_Message"");
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
我真的不记得 JSTL,但最后访问请求范围上下文,并搜索 "err_msg"