java - Servlet 响应错误的动态错误页面

标签 java jsp servlets error-handling httpresponse

我正在尝试使用 HttpServletResponse 函数 sendError(int,string) 向 JSP 传递状态代码和自定义错误消息,以便我可以拥有动态错误页面(而不是每个错误代码/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>

编辑:我应该澄清一下,我知道除非实际抛出异常,否则不会打印堆栈跟踪和异常名称,我对打印自定义消息更感兴趣,因为这对于调试在标准之后发生的问题很有用测试/部署程序。

最佳答案

因此只需指定带有请求对象的消息作为属性,然后从错误页面访问该属性

request.setAttribute("err_msg",""Some_Message"");
response.sendError(HttpServletResponse.SC_BAD_REQUEST);

我真的不记得JSTL,但最后访问请求范围上下文,并搜索“err_msg”

关于java - Servlet 响应错误的动态错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994354/

相关文章:

java - 无法访问 Java Servlet

java - 错误java : cannot find symbol when building with JHipster

java - 让 IntelliJ 识别 AnnotationProcessor 生成的类

java - JSP 文本字段只读

java - HTTP 状态 500 - Servlet 执行抛出异常

java - 我尝试调用虚拟方法 'void android.support.v7.widget.AppCompatImageView.setImageDrawable(android.graphics.drawable.Drawable)?

java - Struts JSON 插件总是设置 null 值

java - Spring MVC 显示日期变量

jakarta-ee - glassfish 3.1 虚拟服务器噩梦

java - Jquery Ajax调用servlet不成功