springMVC拦截器的实现方式
定义的Interceptor类实现Spring的HandlerInterceptor 接口
拦截器接口有三个方法:
preHandle:执行处理方法前执行(可执行登录检查)。返回true则执行下一个动作,否则中断流程,不执行后面的拦截器和处理器,必须使用response来响应。
postHandle:处理方法执行完后,渲染视图前执行。可以对即将渲染的视图进行处理。
afterCompletion:请求处理完毕后执行,也就是在视图渲染完成后执行,可以进行一些资源的清理操作。
@Component
public class TestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("预处理");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("渲染前");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("渲染后");
}
}
注册拦截器
@Component
public class SysConfig implements WebMvcConfigurer {
@Autowired
private TestInterceptor testInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(testInterceptor)
//配置拦截的路径,这里所有路径都会拦截
.addPathPatterns("/**");
//排除拦截
//.excludePathPatterns()
}
}
基础代码就这样差不多了,具体详细实现功能需要根据需求自己添加。