注意:@WebFilter注解为声明此类为filter,第一个参数为该filter起一个名字,第二个参数为说明要拦截的请求地址。
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebFilter(filterName = "test", urlPatterns = "/*")//可以省略 public class UrlFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("----------------------->过滤器被创建"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; String requestURI = req.getRequestURI(); System.out.println("--------------------->过滤器:请求地址"+requestURI); if(!requestURI.contains("index")){ //contains判断是否包含 request.getRequestDispatcher("/noindex").forward(request, response); //转发。。。 }else{ chain.doFilter(request, response); } } @Override public void destroy() { System.out.println("----------------------->过滤器被销毁"); } }当地址不是index的时候 跳转到noindex