如何为每个路径指定 servlet 错误页面
How to specify servlet error-page per path
web.xml 的 <error-page>
允许开发人员指定在出现某些错误(HTTP 状态或 java 异常)时向客户端 return 发送什么。
但我有 2 个不同的 404 错误页面,每个区域设置。
我的 Web 应用程序的结构使得区域设置 A 的所有资源都在路径 /a/
下;路径 /b/
.
下区域 B 的资源
我希望在尝试访问每个语言环境下的页面时有一个本地化的 404 错误页面(明确地说,尝试访问 /a/some-undefined-resource
应该 return 404 + 一个本地化的错误页面对于语言环境 A)。
考虑到其他限制,实际上不可能为每个语言环境部署 2 个单独的应用程序 a.war 和 b.war。
如何根据请求的原始资源提供错误页面?
我最终放弃了使用 <error-page>
服务我的 SPA 的想法,并使用 urlrewrite filter 将 URL 重写为 /a/index.html
或 /b/index.html
.
缺点是现在我在 SPA 中添加新路线时有两个地方可以编辑:
- angular 条路线 (
app-routing.module.ts
),以及
urlrewrite.xml
.
此外,如果我以后添加新的语言环境,我将需要添加一套新的规则来覆盖我所有的路由。
我也不知道这个过滤器将如何影响我网站的性能。由于它是一个低流量的项目,我会保持这种方式,直到找到更好的解决方案。
也有一个好处:现在那些 - 否则合法 - 请求的状态为 200,真正缺少的资源用 404 表示并且不包含默认内容。
web.xml 的 <error-page>
允许开发人员指定在出现某些错误(HTTP 状态或 java 异常)时向客户端 return 发送什么。
但我有 2 个不同的 404 错误页面,每个区域设置。
我的 Web 应用程序的结构使得区域设置 A 的所有资源都在路径 /a/
下;路径 /b/
.
我希望在尝试访问每个语言环境下的页面时有一个本地化的 404 错误页面(明确地说,尝试访问 /a/some-undefined-resource
应该 return 404 + 一个本地化的错误页面对于语言环境 A)。
考虑到其他限制,实际上不可能为每个语言环境部署 2 个单独的应用程序 a.war 和 b.war。
如何根据请求的原始资源提供错误页面?
我最终放弃了使用 <error-page>
服务我的 SPA 的想法,并使用 urlrewrite filter 将 URL 重写为 /a/index.html
或 /b/index.html
.
缺点是现在我在 SPA 中添加新路线时有两个地方可以编辑:
- angular 条路线 (
app-routing.module.ts
),以及 urlrewrite.xml
.
此外,如果我以后添加新的语言环境,我将需要添加一套新的规则来覆盖我所有的路由。
我也不知道这个过滤器将如何影响我网站的性能。由于它是一个低流量的项目,我会保持这种方式,直到找到更好的解决方案。
也有一个好处:现在那些 - 否则合法 - 请求的状态为 200,真正缺少的资源用 404 表示并且不包含默认内容。