Spring拦截器的实时使用情况是什么?

What are the Real time Usage of Spring Interceptor?

我正在研究 Spring 拦截器,我知道它作为前端控制器工作,它可以服务于一些请求和一些响应或全部,并且在执行流程中,请求首先进入拦截器调用控制器。

但我想了解更多,例如,它的实时场景或用途是什么。例如,我们可以用它来进行会话管理,但我想了解更多。

在提及拦截器在 Web 应用程序中的使用位置之前,我想先提及 2 个关于拦截器的事实 -

  • 在 spring 中拦截器是位于 DispatecherServlet 和控制器之间的东西(你已经知道了)

  • 拦截器界面就像 -

public interface HandlerInterceptor {
  boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
  void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mav);
  void afterCompletion(HttpServletRequest request, HttpServeletResponse response, Object handler, Exception ex);
}

基于以上事实,您可以在以下情况下使用拦截器 -

  • 您可以在渲染视图之前做额外的工作。例如,当全局导航栏 (GNB) 要求根据其权限以不同方式显示项目时,可以处理网页。

  • 可以模仿AOP。 @RequestMappingIf 声明为请求指定了一个请求,然后它的 HandlerMethod(@Controller) 将被调用一个处理程序 HandlerMethod。 HandlerMethod 通过识别附加信息,例如方法签名,您可以确定是否要 运行 逻辑。这样您就可以使用拦截器作为登录(拦截 HttpServletRequest),修改 JSON 或在进入控制器之前或之后对其进行验证。

拦截器的一些实时用法:

  • 维护会话/会话管理。
  • 电子邮件拍摄和数据库 Check/logging。
  • 身份验证和授权验证。
  • 请求时间计算。 / 性能调整。 等等