三、 请求处理生命周期
何为请求处理生命周期呢?简而言之,过去必须自行编写代码才能处理的必要的后端处理,现在全由请求处理生命周期执行。除了处理进入的请求参数,它还管理服务器端的用户界面组件集,并把它们与用户在客户端浏览器中看到的组件同步。
请求处理生命周期在一个web应用中是很重要的,它反映了一个请求从提交到将信息返回给客户端的处理过程。当然,请求处理生命周期必须能以某种优雅的方式,在正确的地方插入用户定制的请求处理操纵逻辑。
1. JSF
JSF的请求处理生命周期清晰的定义成六个步骤:恢复视图、应用请求值、处理验证、更新模型值、调用应用程序和渲染响应。从第二步应用请求值开始,可以直接跳到最后一步渲染响应,甚至可以直接返回给客户端并且通知JSF运行时,响应操作已经完成了。有些方法要访问JSF的FacesContext对象,比如状态监听器(Phase Listeners)、事件操纵器(Event Handlers)、转换器(Converters)、验证器(Validators)等,这都可能忽略请求处理生命周期中的某些步骤。
2. Tapestry
相对JSF有一个单一的生命周期模型而言,Tapestry的生命周期依赖于其调用的引擎服务(Engine Service)。 每一个引擎服务(Engine Service)都有其自己的生命周期。比如,Tapestry中的Direct Service控制标单的提交,而Page Service用于渲染页面,并且不需要额外的服务端操作。每一个引擎服务(Engine Service)都被设计成在自身的生命周期内完成一些特定的任务。这就意味着,对于一个特定的需求,你可以创建一个对应的引擎服务(Engine Service),并且可自己定制生命周期。
JSF的生命周期概念更容易理解,而Tapestry可对一个特定的操作定义一个生命周期,这在某些问题的解决上,可能会提供更优雅的解决方案。