java - 自定义错误页面未捕获 tomcat 中引发的异常
问题描述
Spring Boot 很新——目前正在测试一个2.2.4.RELEASE
配置最少的项目,因为目前正在尝试 Spring Boot,看看它是否满足我的需求。
我已经禁用了白标错误页面,我自己error.html
使用thymeleaf
了模板。
该项目将主要基于 REST,因此error.html
只有当他们尝试通过浏览器访问内容/将接受标头设置为不支持的内容等时才会真正提供服务,对于其他所有内容,我都有一个控制器,上面标注了@RestControllerAdvice
各种@ExceptionHandler
不同的东西,这个大部分工作。
但是我遇到的问题是,如果我在 tomcat 中导致异常,即curl -H -i https://localhost:8443/%5C\' -k
会导致 400 Bad Request,这会产生内置的 tomcat 错误页面(我不想要,谢天谢地,我已经隐藏了堆栈跟踪和异常:
server.error.include-stacktrace=never
server.error.include-exception=false
这个异常似乎永远不会传播到我的异常处理程序。我读过其他类似的问题,但没有一个建议有效,我现在迷路了。:-(
任何帮助,将不胜感激。
解决方案
在 web.xml 上,您可以捕获这些 tomcat 级别的错误消息并显示您选择的页面,如下所示 -
<error-page>
<error-code>500</error-code>
<location>/Error.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/Error.html</location>
</error-page>
<error-page>
<error-code>501</error-code>
<location>/Error.html</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/Error.html</location>
</error-page>
推荐阅读
- javascript - 通过电子邮件发送带有文本框和标签的 HTML 内容
- php - 如果没有结果,PHP PDO 返回标头
- sql - 有条件地将十进制值转换为整数
- javascript - 如何使用 javascript 为我的表创建行跨度,该表具有来自 Zend Framework 中 sql 的数据
- azure - 通过 Azure VPN 从 Microsoft Azure Logic Apps 向 PC 发送 HTTP 请求?
- redmine - 是否可以参考另一个 redmine 案例中的图像?
- css - 难以理解的行为(改变宽度)引导程序中的元素
- r - 将字符列切成特定数量的单词
- src - 如何制作具有相同“src”的元素
- android - 将文件从节点 js 服务器下载到 android 应用程序