springMVC框架的请求流程

版权声明:如需转载,请注明出处,谢谢! https://blog.csdn.net/qq_41172416/article/details/82630012

优点

  ①多视图共享一个模型,大大提高代码的可重用性。

  ②MVC三个模块相互独立,松耦合架构。

  ③提高程序的灵活性和可配置性。

  ④有利于软件工程化管理。

 缺点

  ①原理复杂

  ②增加了系统结构和实现的复杂性

  ③视图对模型数据的低效率访问。

Spring MVC请求处理流程

详细分析Spring MVC请求处理的流程步骤:

(1)首先用户发送请求到前端控制器(DispatcherServlet),前端控制器根据请求信息(比如:URL)来决定选择哪个页面控制器(Controller)来进行处理,并把请求委托给它,即:Serlvet控制器的控制逻辑部分

(2)页面控制器接收到请求后,进行业务处理,处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

(3)前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的真正视图,并把模型数据传入以便视图渲染展示

(4)前端控制器再次收回控制权,将结果响应返回给用户,至此整个流程结束

Spring MVC体系结构

 

结合请求处理流程简述框架结构:

(1)客户端发出HTTP请求,Web应用服务器接收此请求,若匹配DispatcherServlet的请求映射路径(在web.xml中指定),Web容器将该请求转交给DispatcherServlet处理。

(2)DispatcherServlet接收到该请求后,将根据请求的信息(包括:URL、请求参数、HTTP方法等)及HandlerMapping的配置(在<servletName>-servlet.xml中配置)找到处理请求的处理器(Handler)。

(3)当DispatcherServlet根据HandlerMapping找到对应当前请求的Handler之后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

(4)在请求信息到达真正调用Handler的处理方法之前的这段时间内,Spring MVC还完成了很多工作,它会将请求信息以一定的方式转换并绑定到请求方法的入参中,对于入参的对象会进行数据转换、数据格式化以及数据校验等。这些都做完之后,最后才真正的调用Handler的处理方法进行相应的业务逻辑处理。

(5)处理器完成业务逻辑处理之后将返回一个ModelAndView对象给DispatcherServlet,ModelAndView对象包含了逻辑视图名和模型数据信息。

(6)ModelAndView对象中包含的是“逻辑视图名”,而非真正的视图对象,DispatcherServlet会通过ViewResolver将逻辑视图名解析为真正的视图对象View。当然对于负责数据展示的视图可以为:JSP、xml、PDF、JSON等多种数据格式,对此Spring MVC均可灵活配置。

(7)当得到真实的视图对象View后,DispatcherServlet会使用ModelAndView对象中的模型数据对View进行视图渲染。

(8)最终客户端获得响应消息,根据配置,可以是普通的HTML页面,也可以是一个XML或者JSON格式的数据等等。

 视图解析器

 

 InternalResourceViewResolver是最常用的视图解析器,通常用于查找jsp和JSTL等视图。它是UrlBasedViewResolver的子类,它会把返回的视图名称都解析为InternalResourceView对象。

猜你喜欢

转载自blog.csdn.net/qq_41172416/article/details/82630012