我有一个扩展HttpServlet
并实现GET
请求的servlet。我还使用了一个过滤器(来自外部库),它被映射到上面的servlet url。现在,过滤器抛出异常,正如预期的那样,我得到了这个
SEVERE:servlet [myServlet]的Servlet.service()与上下文有关 path []抛出异常
我知道error-page
描述可能是捕获此异常的标准方法,但有没有办法从特定的servlet过滤器中捕获异常?我已经有error-page
个描述并重定向到一个简单的html页面。我也不想重定向到jsp页面左右,并使用错误参数。简而言之,我的问题是:
error-page
描述符似乎没有任何字段可以选择抛出异常的servlet。答案 0 :(得分:5)
你能不扩展Filter并处理super?
抛出的异常public class MyFilter extends CustomFilter{
private static final Map<String, String> exceptionMap = new HashMap<>();
public void init(FilterConfig config) throws ServletException {
super.init(config);
exceptionMap.put("/requestURL", "/redirectURL");
exceptionMap.put("/someOtherrequestURL", "/someOtherredirectURL");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try{
super.doFilter(request, response, chain);
}catch(Exception e)
//log
String errURL = exceptionMap.get(request.getRequestURI());
if(errURL != null){
response.sendRedirect(errURL);
}
}
}
}