当前位置: 首页 > news >正文

Spring MVC 拦截器总结

1.简介

Spring MVC提供了拦截器方便在接口调用前后进行一些通用处理。

2.步骤

1.实现一个拦截器类,共有三处拦截时机:

public class Interceptor1 implements HandlerInterceptor {//实现HandlerInterceptor接口//执行handler之前调用//编码格式处理,登录保护,权限处理@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("Interceptor1.preHandle");return true;//拒绝还是通过}//handler执行完毕后执行//检查敏感词汇@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("Interceptor1.postHandle");HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}//整体处理完毕执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("Interceptor1.afterCompletion");HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

2.在配置类中注册拦截类:

public class MvcConfig implements WebMvcConfigurer {//实现WebMvcConfigurer接口
...@Overridepublic void addInterceptors(InterceptorRegistry registry){//方法 1.注册拦截类,拦截全部请求registry.addInterceptor(new Interceptor1());//方法 2.指定地址拦截//通配符:* :一层字符 **:多层字符registry.addInterceptor(new Interceptor1()).addPathPatterns("/product/**");//方法 3.排除拦截registry.addInterceptor(new Interceptor1()).addPathPatterns("/user/***").excludePathPatterns("/user/data1");//如果有多个拦截类优先级如何?registry.addInterceptor(new Interceptor1())//先声明优先级高,先进后出.addPathPatterns("/product/**");registry.addInterceptor(new Interceptor2())//后声明优先级低,后进先出.addPathPatterns("/product/**");
}

http://www.mrgr.cn/news/34945.html

相关文章:

  • 解决银河麒麟操作系统在单用户模式下根分区只读的问题
  • flink 的 Barrier 对齐 的优劣详解:
  • 【C++掌中宝】深入理解函数重载:概念、规则与应用
  • 《现代畜牧兽医》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Spring Boot集成LiteFlow使用详解
  • Jetpack——Room
  • 水政渔政船、轮渡邮轮及作业船舶监控:视频监控在水利水资源保护中的应用
  • 程序员下班以后做什么副业合适?_35技术人员副业
  • async await执行顺序
  • 中文文本词性分析-技术实现-python
  • 旷视科技ShuffleNetV1代码分析[pytorch版]
  • Apache Cordova和PhoneGap
  • 关于考试监听切屏的三种方式
  • 【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
  • excel 时间戳与日期转换
  • 9_23_QT窗口
  • Java--认识泛型(2)
  • vue3 数字滚动组件封装
  • 如何只用 CSS 制作网格?
  • 从理论到实践:业务能力建模在数字化转型中的落地实施路径