第一步首先创建一个拦截器类,命名(Ninterceptor)并且让它继承HandlerInterceptor
再重写出它的三个方法
public boolean preHandle(){}//拦截器处理器,返回为true的时候才会继续通过请求,返回为false就不会通过请求控制
public boolean postHandle(){}//被拦截后才会响应
public void afterCompletion(){}//当拦截器处理完后调用
- 在把上面这个类创建成功后
- 再增加一个视图管理类 该类继承了WebMvcConfigurer视图接口
别忘了为该类注入服务(Ninterceptor)因为要在这个类中进行拦截控制
- 这是Springboot的注入方式
@Autowired
NInterceptor nInterceptor; - 在写视图类里面这里面创建
public void addViewControllers(ViewControllerRegistry registry){}
方法.
- registry.addViewController(“接口名如’xxx/xx’”).setViewName(“视图层名如’xxx.html”);
接下来就是在该类中配置拦截器拦截什么
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(nInterceptor)//装载拦截器类 注入到这个类中的对象
.addPathPatterns("/xxx/**");//拦截格式 (一个* 表示拦截本级目录下的文件,两个**表示本级目录以下的文件和文件夹下的文件)
.excludePathPatterns("/xxx/xxx");//这是不拦截的名字
我的列子
Ninterceptor类中方法
public boolean preHandle(){
System.out.println("你已经进入拦截器处理程序!");
return true;
}
视图中的拦截配置这样
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/admin/test2").setViewName("/admin/test_2");
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(nInterceptor)
.addPathPatterns("/admin/**");
.excludePathPatterns("/admin/test1");