当前位置: 首页> 健康> 养生 > b2c和o2o的区别_中国500强企业排名表_北京搜索引擎优化经理_大众网潍坊疫情

b2c和o2o的区别_中国500强企业排名表_北京搜索引擎优化经理_大众网潍坊疫情

时间:2025/7/11 14:39:02来源:https://blog.csdn.net/weixin_39789340/article/details/144917204 浏览次数:0次
b2c和o2o的区别_中国500强企业排名表_北京搜索引擎优化经理_大众网潍坊疫情

拦截器是 Spring 框架提供的核心功能之一,属于一种设计模式,它允许在某个方法调用或请求处理前后执行自定义逻辑,是一种AOP(面向切面编程)机制。它们可以在不修改原有业务逻辑的情况下,对进入系统的请求进行预处理和后处理。
这种场景就类似我们现实生活中去银行办理业务:去银行办业务柜员首先需要的就是身份证,如果没有身份证,就不能取号,更不能办理后续的业务;有就去取号,然后排队等待,办理自己的业务。
拦截器在这里就相当于柜员,会首先询问有没有携带身份证,有身份证才能办理后续的业务,没有就没法办理业务,需要回家拿身份证。

□ 使用场景

身份验证与授权:在进入控制器之前验证用户身份,确保只有经过认证和授权的用户才能访问某些资源。
日志记录:记录所有请求的信息,包括时间戳、来源IP地址、HTTP方法、URI等
性能监控:记录每个请求的处理时间,收集统计数据以优化系统性能。
数据转换:在请求到达控制器前或响应返回客户端前对数据进行格式化或转换。
全局异常处理:捕获未处理的异常,并返回统一格式的错误信息给客户端。

□ 快速使用

实现HandlerInterceptor接口:
自定义拦截器,实现HandlerInterceptor接口,并重写所有方法。这是最直接的方式,适用于所有版本的SpringMVC。

@Slf4j
@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler) throws Exception {log.info("LoginInterceptor ⽬标⽅法执⾏前执⾏..");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler, ModelAndView modelAndView) throws Exception {log.info("LoginInterceptor ⽬标⽅法执⾏后执⾏");}@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throws Exception {log.info("LoginInterceptor 视图渲染完毕后执⾏,最后执⾏");}
}

定义配置类,在配置类中编写我们要拦截哪些请求路径映射,放行哪些请求路径的映射。


@Configuration
public class MyConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/**") //拦截所有的 url.excludePathPatterns("/user/login")//排除url: /user/login (登录).excludePathPatterns("/user/reg") //排除url: /user/reg   (注册).excludePathPatterns("/image/**")//排除 image(图像) 文件夹下的所有文件.excludePathPatterns("/**/*.js")//排除任意深度目录下的所有".js"文件.excludePathPatterns("/**/*.html").excludePathPatterns("/**/*.css");}
}

也可以定义集合,把要排除的路径都放进集合中:

//定义一个集合,把要排除的路径都放进集合中
@Configuration
public class MyConfig implements WebMvcConfigurer {@AutowiredLoginInterceptor loginInterceptor;private List<String> excludePaths = Arrays.asList("/user/login","/user/reg","/image/**","/css/**","/js/**","/**/*.html");@Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册自定义拦截器对象registry.addInterceptor(loginInterceptor).addPathPatterns("/**")//设置拦截器拦截的请求路径.excludePathPatterns(excludePaths)//设置拦截器排除拦截的路径;}
}

拦截器中常见的拦截路径设置:

拦截路径解析示例
/*一级路径一级路径/user,/cust,/report可以匹配;二级路径及多级/user/login,/cust/risk/level不能匹配
/**所有路径/user,/user/login,/cust/risk/level都能匹配
/user/*user路径下的一级路径user下的一级路径/user/login可以匹配;多级路径/user/risk/level不可以
/user/**user路径下的所有路径user下的路径/user,/user/login,/user/risk/level都能匹配
  • 拦截器 vs 过滤器

    虽然拦截器和过滤器都能用来处理请求/响应,但它们有一些重要的区别:

    • 作用范围
      过滤器:适用于所有的Servlet请求,包括静态资源文件。
      拦截器:仅限于Spring MVC框架内的请求,即那些会被映射到控制器的方法上。

    • 功能差异
      过滤器:更适合做与业务无关的操作,例如编码转换、GZIP压缩等。
      拦截器:更贴近业务逻辑,适合做权限控制、日志记录、数据预处理等工作。

    • 生命周期
      过滤器:由Servlet容器管理其生命周期。
      拦截器:由Spring容器管理,因此可以利用依赖注入等功能。

☆ 参考:文章 FC464782123

关键字:b2c和o2o的区别_中国500强企业排名表_北京搜索引擎优化经理_大众网潍坊疫情

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: