SpringMVC
工作原理
流程说明(重要):
- 客户端(浏览器)发送请求,直接请求到 DispatcherServlet。
- DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的 Handler。
- 解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 HandlerAdapter 适配器处理。
- HandlerAdapter 会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑。
- 处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。
- ViewResolver 会根据逻辑 View 查找实际的 View。
- DispaterServlet 把返回的 Model 传给 View(视图渲染)。
- DispaterServlet 把 View 返回给请求者(浏览器)
过滤器与拦截器区别
- 拦截器是基于动态代理的,而过滤器是基于函数回调。
- 拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器。
- 拦截器可以在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调用一次。
- 拦截器可以利用依赖注入,因此在Spring框架程序中,优先拦截器。