首先创建一个类让他继承 HandlerInterceptor接口
实现其中的
preHandle
postHandle
afterCompletion 方法,这三个方法分别作用于请求来的前中后(顾名思义),一般会在登录成功之后再session域中放入用户登录的有关信息,
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session= request.getSession(); User user=(User) session.getAttribute("user"); if(user!=null){ return true; } //拦截住跳转到登录页 session.setAttribute("msg","请先登录!"); response.sendRedirect("/"); return false; } (关于request.getSession()与request.getSession(false)的区别,前者会先对是否已经有session做判断,没有回创建一个,而后者只取,如果没有返回null) 接下来写配置类,有与springboot框架基本舍弃了之前老项目xml配置文件,本人不太会操作properties或者yml配置文件也可以写配置类,其到同样的作用, 对于传统的xml文件也可以使用@ImportResources注解来引入。
@Configuration//次类为配置类==xml public class AdminWebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { WebMvcConfigurer.super.addInterceptors(registry); String[] addPathPatterns = {"/**"};//拦截所有请求 String[] excludePathPatterns = {"/index","/", "/login", "/css/**", "/fonts/**", "/images/**", "/js/**"}; registry.addInterceptor(new LoginInterceptor()) .addPathPatterns(addPathPatterns) .excludePathPatterns(excludePathPatterns); } }
addPathPatterns:要拦截的请求
excludePathPatterns:要放行的请求,一般与登录相关的请求和静态资源文件是需要放行的。