Spring MVC中的Handler,Resolver和Interceptor之间有什么区别?

Loo*_*oop 5 spring spring-mvc

Spring MVC中的Handler,Resolver和Interceptor似乎都做了类似的事情 - 即提供在请求到达Controller之前预处理请求的能力?

这三者的区别是什么?

aba*_*ogh 8

它们不一样,而且据我所知,解析器并没有真正参与预处理请求.拦截器在处理者面前开火.来自Spring MVC文档:

拦截器:

Spring的处理程序映射机制具有处理程序拦截器的概念,当您想要将特定功能应用于某些请求(例如,检查主体)时,它可能非常有用.位于处理程序映射中的拦截器必须从org.springframework.web.servlet包中实现HandlerInterceptor.此接口定义了三个方法,一个将在执行实际处理程序之前调用,一个将在执行处理程序之后调用,另一个在完成请求完成后调用.这三种方法应该提供足够的灵活性来进行各种预处理和后处理.

处理器:

DispatcherServlet,用于将请求分派给处理程序,具有可配置的处理程序映射,视图解析,区域设置和主题解析以及对上载文件的支持.默认处理程序基于@Controller和@RequestMapping注释,提供各种灵活的处理方法.

解析器(S):

  • 视图解析器:视图解析器是能够将视图名称解析为视图的组件
  • 区域设置解析器:区域设置解析器是一个能够解析客户端正在使用的区域设置的组件,以便能够提供国际化视图
  • 主题解析器:主题解析器能够解析您的Web应用程序可以使用的主题,例如,提供个性化布局
  • 多部分文件解析器:多部分文件解析器提供从HTML表单处理文件上载的功能
  • 处理程序异常解析程序:处理程序异常解析程序提供将异常映射到视图或实现其他更复杂的异常处理代码的功能

  • 我们是否可以修改这些组件的执行顺序.假设我想在调用视图解析器之前调用拦截器.那可能吗? (2认同)