JavaWeb---filter-filter interception mode setting

JavaWeb—filter-filter interception mode setting

  • Filters can distinguish different ways of accessing resources, and there are different ways to intercept them.
  • dispatcher: access method
    • REQUEST: The default value, which means that the filter is executed when a resource is directly accessed
    • FORWARD: filter is executed when forwarding
  • How to set
    • By default, the filter can only block directly accessed resources, and cannot block forwarded access resources
    • If you want the filter to be able to intercept whether it is direct access or forwarding access, you need to set the @WebFilter attribute
@WebFilter(value = "/index.jsp",dispatcherTypes={
    
    DispatcherType.REQUEST,DispatcherType.FORWARD})

img

DispaterServlet

package com.lbl.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/dispater")
public class DispaterServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
}

AccessFilter

package com.lbl.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(value = "/index.jsp",dispatcherTypes={
    
    DispatcherType.REQUEST,DispatcherType.FORWARD})
public class AccessFilter implements Filter {
    
    
    public void destroy() {
    
    
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
    
        System.out.println("过滤器执行了");
        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {
    
    
        
    }

}

running result:
Insert picture description here

Guess you like

Origin blog.csdn.net/qq_37924905/article/details/108617292