gpt4 book ai didi

java - 由错误页面处理的 ViewExpiredException,仍在日志中

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:44 26 4
gpt4 key购买 nike

JSF 应用程序可以在 session 过期时抛出 ViewExpiredException。当您的系统上有 guest 时,此事件将很常见。因此,应用程序将处理此事件而不会给访客带来任何麻烦,如下所示:

<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/expired</location>
</error-page>

当客人试图在过期的 session 上发送请求时,他将被重定向到/expired。因为我不认为这个Exception 是一个值得一提的问题,所以我想阻止将堆栈跟踪写入我的应用程序服务器的日志。

我怎样才能做到这一点?

最佳答案

基本上有 2 个选项,每个选项都归结为相同的解决方案:使用 servlet filter 自行捕获、抑制和导航到错误页面或 JSF exception handler .这样异常就不会到达 servletcontainer,后者会自动处理并记录它。

假设错误页面确实为您完成了工作(这不适用于 JSF ajax 请求,除非您有自定义的 JSF ExceptionHandler),然后是一个映射到 URL 的 servlet 过滤器在其 doFilter() 方法中执行以下操作的模式匹配 JSF 请求应该足够了:

try {
chain.doFilter(request, response);
} catch (ServletException e) {
if (e.getRootCause() instanceof ViewExpiredException) {
request.getRequestDispatcher("/expired").forward(request, response);
} else {
throw e;
}
}

如果您还想涵盖 JSF ajax 请求,那么您不能绕过 JSF 异常处理程序。前往以下相关答案以查看一些具体示例:

关于java - 由错误页面处理的 ViewExpiredException,仍在日志中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16119146/

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