FIlterChain异常处理

问题描述 投票:1回答:2

我想了解春季安全涉及方法的安全性和基于URL的安全性。基于URL的安全性是完全基于Servlet Filters。有一些场景时例外通过过滤器链抛出春季安全交易,以完成其工作。

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

servlets exception-handling servlet-filters
2个回答
5
投票

我如何filterChain处理由doFilter方法在过滤器链中抛出的异常特别感兴趣。

它什么都不做他们。换句话说,它只是让他们去泡了。他们最终会在已经知道如何根据在<error-page> web.xml配置来对付他们servletcontainer的内置异常处理程序结束。

但是,您可以通过将FilterChain#doFilter()呼叫,像这样一个try-catch块自己控制它:

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

如果什么都环比下滑(过滤器的servlet,JSP等)抛出一个未捕获的异常,它会在那儿结束。

See also:


0
投票

我不认为你可以HttpServletResponse的流试图/捕捉doFilter方法一样,当专门拦截HttpServletResponse的流返回任何有意义的东西在的errorMessage,除非你和呼叫类似sendError。这甚至已经调用的doFilter之前完成。

我如何filterChain处理由doFilter方法中过滤器链中抛出的异常特别感兴趣。

但我想知道如何发送一个有意义的响应回流时除外filterChain内发生。因为即使有也不例外,你将如何去处理成功响应,如果你已经呼吁像之前的doFilter一个sendError方法(?)

© www.soinside.com 2019 - 2024. All rights reserved.