1、SpringMVC常用组件:
- DispatcherServlet(请求分发器):Spring MVC的核心组件之一,负责处理全局配置和将用户请求分发给其他组件进行处理。
- Controller(处理器): 实际处理业务逻辑的组件。
- HandlerMapping(处理器映射器):根据请求URI确定应该由哪个处理器(Controller)来处理该请求。HandlerMapping维护一个请求路径和处理器的映射关系(通过扫描@RequestMapping获得)。
- HandlerExecutionChain(处理器执行链):请求处理的执行链,包含处理器和拦截器的执行顺序。HandlerExecutionChain对象包含一个处理器(handler),这个处理器是对Controller的包装。
- HandlerAdapter(处理器适配器):请求可能是普通的HTTP请求,也可能是WebSocket等请求,需要选择合适的适配器去执行HandlerExecutionChain对象包含的拦截器和处理器(handler)逻辑。
- ModelAndView(模型和视图):是一个将处理结果的模型数据以及要展示的视图名称封装在一起的对象,供视图解析器进行处理。
- ViewResolver(视图解析器):将 ModelAndView 对象中的视图名称解析为具体的视图对象(View)。例如,在Controller中返回的是“user/detail”,那么它就会找到“/WEB-INF/jsp/user/detail.jsp”作为视图(View)。
- View(视图):负责将模型数据渲染到视图中,并生成最终的HttpResponse对象。View可以是JSP、Thymeleaf等不同的模板引擎,或者是其他自定义的视图实现。
2、SpringMVC流程
-
客户端向Web服务器(如Tomcat)发送一个Http请求,Web服务器将请求转给 DispatcherServlet 处理。
-
DispatcherServlet 接收到请求后,解析请求地址,得到URI,然后通过 HandlerMapping 得到包含拦截器和handler的 HandlerExecutionChain。
-
DispatcherServlet 根据得到的Handler对象,选择一个合适的 HandlerAdapter。HandlerAdapter 负责调用拦截器和handler执行相应的逻辑,执行完毕后返回一个 ModelAndView对象 给 DispatcherServlet。
-
DispatcherServlet 调用 ViewResolver 将 ModelAndView对象 中的视图名称解析为具体的视图对象(View)。
-
DispatcherServlet 调用视图对象的方法,解析 Model(模型数据),然后进行视图渲染,最后形成一个 HttpResponse 对象。
-
最后,DispatcherServlet(请求分发器)将生成的 HttpResponse 对象返回给客户端。