java-インターセプターフィルター
AFilterインターセプター:第
1レベルのインターセプト、Aはサーブレットにアクセスする要求をインターセプトします
@WebFilter("/as")
public class AFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("A出生了");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("A进来了");
filterChain.doFilter(servletRequest,servletResponse);//放行,执行过滤器链中的下一个过滤器,如果没有下一个过滤器,则放行
System.out.println("A结束拦截");
}
@Override
public void destroy() {
System.out.println("A销毁了");
}
}
サーブレットコード:
@WebServlet("/as")
public class AServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("AServlet进来了");
//转发到
user.jsprequest.getRequestDispatcher("/users/user.jsp").forward(request,response);
}
}
BFilterインターセプターインターセプトの
第2層、Bインターセプト、サーブレットがjspに転送するプロセス
@WebFilter(value = "/users/user.jsp" , dispatcherTypes = DispatcherType.FORWARD)
public class BFilter implements Filter {
public void destroy() {
System.out.println("B出生了");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("B进来了");
chain.doFilter(req, resp);
System.out.println("B结束拦截");
}
public void init(FilterConfig config) throws ServletException {
System.out.println("B销毁了");
}
}