filter 可以用于对访问请求进行控制
- 对于未登录的访问进行拦截并跳转到登录页面
- 防盗链的设置,不是从指定页面跳转的链接一律拦截并跳转到首页
针对未登录请求的拦截处理:
1、放行指定页面(无需登录即可访问的页面)
- 登录页面
- 静态资源
- 登录操作
- 注册操作
2、拦截需要登录才能访问的页面,并转发到登录页面
@WebFilter(value = "/*")public class LoginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;// 1、放行无需登录的页面String requestURI = request.getRequestURI();if (requestURI.contains("/login.jsp")){// 放行filterChain.doFilter(request, response);return;}// 2、放行静态资源if (requestURI.contains("/js") || requestURI.contains("/css")) {// 放行filterChain.doFilter(request, response);return;}// 3、登陆操作、注册操作// 4、需要登录才能访问的操作:以判断请求参数中是否带有login参数进行判断或者相关session,此处为示意String login = request.getParameter("login");if (login == null) {// 转发到登录页面request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);} else {// 放行filterChain.doFilter(request, response);}}@Overridepublic void destroy() {}}
