方法1
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request =(HttpServletRequest)servletRequest;
servletRequest.getRequestDispatcher(request.getServletPath()).forward(servletRequest, servletResponse);
// filterChain.doFilter(request,response);
}
方法二:
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ApplicationFilterChain applicationFilterChain =(ApplicationFilterChain) filterChain;
applicationFilterChain.getServlet().service(servletRequest, servletResponse);
// filterChain.doFilter(request,response);
}
FilterChain 的实现类是org.apache.catalina.core.ApplicationFilterChain, 这个类是final 类,无法继承,
只能通过拷贝这个类出来,新建一个类和这个类同名同姓,往里面增加一个getServlet(){ return this.servlet;}方法,获取ApplicationFilterChain里面的
private Servlet servlet 成员,即可实现直接将请求跳过其他filter 链