官方springMVC执行原理图:
1.前端控制器就是DispatcherServlet
2.页面控制器就是Controller
3.模型就是业务层(service)以及下面的Dao层
4.Model就是视图解析器,解析到具体的.jsp或者.html等文件
5.视图就是根据视图解析器获得的具体视图
具体细节:
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器 (Controller)
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。
HandlerExecution将解析后的信息传递给DispatcherServlet,比如在哪找到了hello控制器等。
HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
Handler让具体的Controller执行。
Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
在Controller进行业务模块流程的控制。 Controller的方法调用Service业务层的指定方法完成业务逻辑,业务层的方法又会调用DAO层指定方法做数据持久化操作, 并最终将结果返回到action层,action层的方法 会返回一个ModelAndView
HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
视图解析器将解析的逻辑视图名传给DispatcherServlet。
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
最终视图呈现给用户。
说明:
①:Action对象 业务层的对象 dao层的对象 sqlSessionFactory对象,都由spring容器来创建和销毁, spring对对象进行统一管理,根据配置文件对其进行注入实现,
②:业务层的处理方法, 使用spring的aop的声明式事务管理
评论