servlets - FILterChain异常处理

标签 servlets exception servlet-filters

我正在尝试了解涉及方法安全性和基于 URL 的安全性的 Spring 安全性。基于 URL 的安全性完全基于 Servlet Filters。在某些情况下,Spring 安全性会处理过滤器链抛出的异常以完成其工作。

我知道 Servlet 容器如何执行过滤器,但我对 filterChain 如何处理过滤器链中的 doFilter 方法抛出的异常特别感兴趣。

最佳答案

I am particularly interested in how filterChain handle exceptions thrown by doFilter method in filter chain.

它对他们没有任何作用。换句话说,它只是让它们冒泡。它们最终会出现在 servletcontainer 的内置异常处理程序中,该处理程序已经知道如何根据 <error-page> 处理它们。 web.xml中的配置.

但是您可以通过放置 FilterChain#doFilter() 来自己控制它调用try-catch像这样阻止:

try {
    chain.doFilter(request, response) {
} catch (ServletException e) {
    Throwable cause = e.getRootCause(); 
    // ... (handle it)
}

如果链下的任何其他东西(过滤器、servlet、jsp 等)抛出未捕获的异常,它将在那里结束。

另见:

关于servlets - FILterChain异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35738662/

相关文章:

java - 如何更改java过滤器中的servlet请求主体?

ios - 由于未捕获的异常 'NSRangeException' 而终止应用程序,原因 : '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]' in IOS

java - JVM 如何知道在运行时在哪里捕获异常?

java - response.sendError 使用自定义过滤器抛出异常

java - 识别 servlet 中的 html 表单或其编码(文本或文件)

java - 如何使用servlet和业务层?

java - CAS 身份验证 - UrlRewriteFilter 使 request.getRemoteUser() 无效

java - 在 chain.doFilter 之后添加响应头

java - 如何使用过滤器来衡量性能?

java - 如何简化/重用这个异常处理代码