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

时间:2011-06-25 14:54:25

标签: spring spring-mvc

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

这三者有什么区别?

1 个答案:

答案 0 :(得分:7)

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

拦截器:

  

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

处理程序:

  

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

冲突解决程序(或多个):

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