转载

springMVC执行原理

官方springMVC执行原理图:

1.前端控制器就是DispatcherServlet

2.页面控制器就是Controller

3.模型就是业务层(service)以及下面的Dao层

4.Model就是视图解析器,解析到具体的.jsp或者.html等文件

5.视图就是根据视图解析器获得的具体视图

具体细节:

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
  • 我们假设请求的url为 : http://localhost:8080/SpringMVC/hello

  • 如上url拆分成三部分:

  • http://localhost:8080服务器域名

  • SpringMVC部署在服务器上的web站点

  • hello表示控制器 (Controller)

  • 通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

  1. HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。

  2. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。

  3. HandlerExecution将解析后的信息传递给DispatcherServlet,比如在哪找到了hello控制器等。

  4. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

  5. Handler让具体的Controller执行。

  6. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

在Controller进行业务模块流程的控制。 Controller的方法调用Service业务层的指定方法完成业务逻辑,业务层的方法又会调用DAO层指定方法做数据持久化操作, 并最终将结果返回到action层,action层的方法 会返回一个ModelAndView

  1. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。

  2. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

  1. 视图解析器将解析的逻辑视图名传给DispatcherServlet。

  2. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

  3. 最终视图呈现给用户。

说明:

①:Action对象 业务层的对象 dao层的对象 sqlSessionFactory对象,都由spring容器来创建和销毁, spring对对象进行统一管理,根据配置文件对其进行注入实现,

②:业务层的处理方法, 使用spring的aop的声明式事务管理

评论