Spring MVC的核心组件包括:
1、DispatcherServlet:这是Spring MVC的前置控制器,它接收所有HTTP请求,并将请求分发给合适的控制器处理。DispatcherServlet通过HandlerMapping将请求路由到具体的controller方法上。
2、Controller:它是业务逻辑的处理中心,负责处理HTTP请求。Controller处理完成后,将处理结果通过ModelAndView传递给DispatcherServlet。
3、HandlerMapping:它是一个策略接口,用于决定DispatcherServlet将请求分发给哪个Controller处理。在处理Spring MVC设置的请求时,HandlerMapping会根据不同的规则来进行URL映射,找到对应的Controller。
4、ModelAndView:View和Model的封装类。控制器通过设置ModelAndView的Model属性来将数据传递到视图中,并且通过视图的逻辑名称(比如index.jsp)来指定渲染哪个视图。(现在不常用)
5、ViewResolver:根据逻辑视图名称(比如index.jsp)来解析对应的视图层,返回一个View对象。ViewResolver使用了一个策略模式,可以配置多个View解析器,以支持不同的视图类型,例如FreeMarker、Thymeleaf、JSP等。
6、View:用来渲染数据并呈现给用户。View可以是JSP、HTML或者其他类型的视图。View负责展示ModelAndView中的数据,并且将渲染后的内容返回给客户端。
在处理一次HTTP请求时,Spring MVC的处理流程如下:
1、客户端发送HTTP请求到服务器。
2、请求到达DispatcherServlet,DispatcherServlet根据请求信息选择一个HandlerMapping处理器映射,并将请求转发给对应的Controller。
3、Controller处理请求并将结果封装到ModelAndView中。
4、ViewResolver根据Controller返回的逻辑视图名称解析出View对象。
5、View使用ModelAndView中的数据和视图模板渲染出响应,将响应内容发送到客户端。