三大框架工作流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate的工作流程:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
Hibernate中bean 的三种状态
Hibernate对象分为三种状态:瞬时态(new 出来的或者实例化时session无关的),持久态(session关联)与游离态(曾经与session关联)。其中持久态的对象是PO,瞬时态、托管态的对象可作为VO。(PO不应该直接用作v层)所以在使用中应该注意三态的转化。如:在进行数据操作的一系列过程中,save 或者saveorupdate操作可以把瞬时态或者游离态的对象转换成持久态,而delete或者session的close、flush等操作将会把session相关联的持久态对象转换成游离态。
Hibernate对象的状态和生命周期
使用new操作符初始化的对象是一个瞬时态的(Transient)(没有任何跟数据库表相关联的行为,只要应用不再引用这些对象,它们的状态就会丢失,并由垃圾回收机制回收);瞬时态对象经过save(),saveOrUpdate会转换成持久态,由session统一管理,持久态对象的操作与数据库同步;持久态对象经过evict(),close(),clear()等会转换成游离态,这时虽然被持久化,但是不在session缓存中,通过lock(),update(),saveOrUpdate又会转换成持久态。
通过get(),load(),find(),iterate()获得的对象直接就是持久态的。
struts2的主要工作流程是这样的:
首先有一个http请求,这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin),然后进入struts2的控制核心FilterDispatcher;
FilterDispatcher询问ActionMapper,来判断此请求是否需要struts2处理,如果需要,那么由ActionProxy来接管,通过配置管理找到struts.xml,然后进入ActionInvocation,经过拦截器,进入action,从而根据返回的result选择我们要的页面,在拦截器的前半部分去值栈中取值通过标签展示在页面上,最后生成response返回
Spring Web MVC 处理Http请求的大致过程:
一旦Http请求到来,DispatcherSevlet将负责将请求分发。DispatcherServlet 可以认为是Spring提供的前端控制器,所有的请求都有经过它来统一分发。
在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring 提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。
Spring Controller将处理来自DispatcherServlet的请求。Spring的Controller 类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于
org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。Controller将处理客户请求,这和Struts Action 扮演的角色是一致的。
一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map 对象能够存储模型。
如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。
DispatcherServlet将View对象渲染出的结果返回个客户。