上回记录了Session的方法,这回要记录一下拦截。因为要做权限功能,只有登录才可以查看之类的。

这个比较简单,两步走。

1. HandlerInterceptor

这个就是实现逻辑,设置拦截规则。

这里就是实现HandlerInterceptor接口,然后请求前,中,后进行拦截。

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object a =  request.getSession().getAttribute("a");
        if (a == null) {
            System.out.println("null");
            return false;
        } else {
            System.out.println("not null");
            return true;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//...
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//...
    }
}

2. WebMvcConfigurer

这个就是注册拦截,设置要拦截的路径、请求。

注意,只对@Controller的生效,因此一定要加上。

@Controller
public class xxx implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/*").excludePathPatterns("/s1");
    }
}

至此,我觉得前面的逻辑基本上都OK了,剩下的就是关于数据库的东西了,我就可以做我的毕业设计了。