在配置包内写一个拦截器类
首先,该类必须要实现HandlerInterceptor接口,然后实现该接口的方法(拦截前,拦截时,拦截后),这里我们只需要实现拦截前的方法,在控制层写一个session以便获取用户的登入信息,如果没有登入信息则拦截,如果有则放行。
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//登入成功之后会有用户的session,所以通过request获取
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
request.setAttribute("msg","您没有登入!");
request.getRequestDispatcher("/login.html").forward(request,response);
return false;
}//重定向到login页面
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 {
}*/
}
}
最最后,需要在wemvc类中添加一个拦截器
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/list").excludePathPatterns("/login");
//addPathPatterns是添加需要拦截的路径,excludePathPatterns是除了哪些路径请求
}
}
这样就实现对/list的拦截了。