通过addInterceptors方法可以设置多个拦截器,比如特定的URL设定拦截器以检查用户是否登录,或用户没有登录就能进入主页。
拦截器有一下三个方法需要覆盖实现:
preHandle,在调用Controller方法前会调用此方法
postHandle,在调用Controller方法结束后,页面渲染之前调用此方法,比如可以在这里渲染的试图名称更改为其他视图名称
afferCompletion:页面渲染完毕后调用此方法
举个例子:
首先我们创建一个拦截器(需要继承HandlerInterceptor):
public class LoginHandlerInterceptor implements HandlerInterceptor {
// 目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
return false;
}
@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 {
}
}
对提交的数据进行判断后进行你想要的处理(例如跳转页面)
第二步(拦截器的注册)
在springboot中的扩展功能里添写
// 注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// super.addInterceptors(registry);
// springboot 已经做好了静态资源的拦截功能,所以不需要处理
// registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
// .excludePathPatterns("/","/index.html","/user/login");
}
网友评论