gpt4 book ai didi

java - Java Web App 中的动态错误页面?

转载 作者:行者123 更新时间:2023-12-01 09:35:30 24 4
gpt4 key购买 nike

如何动态生成错误页面而不是提供静态页面?或者这是不可能的?

我正在开发我的第一个 Java Web 应用程序,并且正在尝试了解 web.xml 配置文件的复杂性。我的理解基于the documentation错误页面是通过指定为给定 HTTP 状态代码或 Java 异常提供服务的静态文件来配置的。例如...

这将为 internal server errors 提供页面

...
<error-page>
<error-code>500</error-code>
<location>/errors/http/500.html</location>
</error-page>
...

这将为 servlet exceptions 提供页面

...
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errors/java/servlet_exception.html</location>
</error-page>
...

这将 specify a default error page for everything

...
<error-page>
<location>/errors/index.html</location>
</error-page>
...

但是如何将此信息发送到脚本/类?

我希望我的错误页面非常标准。可能包括 Logo 、错误代码和基于错误的简短消息。我希望将状态代码或异常类型作为参数传递给脚本/类。有什么办法可以做到这一点吗?

最佳答案

基本上你需要:

  1. 将错误页面设置为 servlet 或 jsp(“错误处理程序”)
  2. 在错误处理程序中,您将获得一些描述错误的数据,作为请求属性。例子:假设您使用 2 个指令配置 web.xml 来处理 404 状态代码和 java.lang.IllegalArgumentException 异常。

当您引发 404 错误时,错误处理程序将看到以下请求属性:

javax.servlet.forward.request_uri /testwebapp1/errordd 
javax.servlet.forward.context_path /testwebapp1
javax.servlet.forward.servlet_path /errordd
javax.servlet.forward.path_info /error
javax.servlet.error.message /testwebapp1/errordd
javax.servlet.error.status_code 404
javax.servlet.error.servlet_name default
javax.servlet.error.request_uri /testwebapp1/errordd

javax.servlet.error.status_code 包含 http 状态代码

如果引发 IllegalArgumentException,请求属性将包含属性“javax.servlet.error.exception_type”以及引发的异常。有关这些常量的更多详细信息可以在这里找到 https://tomcat.apache.org/tomcat-7.0-doc/servletapi/constant-values.html

关于java - Java Web App 中的动态错误页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com