对于任何一个应用而言其完成自身功能的各种步骤就是她的生命周期,一般是指从开始创建(这里可以是组件、控件等等任何应用可能要用到的对象)经过中间一系列的步骤到最终的结束(呈现内容)。其实以往接触的CS系统也有声明周期,只不过不需要开发者去关注罢了。比如在使用VB开发CS架构的系统开发者不需要关注哪个控件是什么时候创建的,什么时候显示的,什么时候在内存中被销毁的等等这些事情。所有的应用都有其生命周期,在Web应用的生命周期中有下面几个环节是最常见的,当然在JSF中对于下面的几个环节也是必不可少的。
处理请求:将request当中的各个信息进行收集
转化参数:将得到的参数进行转化,转化为可以保存的格式,比如将页面中得到的字符串转换成数值类型
更改或者保存状态:主要是为后面的请求做准备
渲染页面:通过包含有效数据的HTML将页面呈现出来
JSF的实现者将其生命周期封装,如果用户仅限于使用的话可以不用关心其内部原理(就像在CS系统中那样),但是如果用户想开发自己的组件那么就必须对JSF的声明周期进行深入得了解。JSF支持开发者开发自己的组件,这也是为了最大限度的让开发者重用代码,提高Web程序的可维护性(关于JSF的其他优势将在后续的博客中详细论述),下面就来详细介绍一个JSF的生命周期。
就像上面说的那样,任何生命周期都又开始与结束(废话),每次请求一个页面就是生命周期的开始,被请求的页面呈现在用户面前(这里不考虑中途遇到的异常等问题)就标志着生命周期的结束。用专业一些的话来说就是“JSF的声明周期开始于客户端的通过Http请求某个页面,结束于服务器返回HTML代码到客户端。”
在JSF中整个生命周期可以分为两大部分——Execute和Render,前者是在服务器端运行一系列的代码,后者是将结果反映到页面上说渲染或者说刷新页面都可以(切记翻译成中文且忘记中文意思就是学习计算机英语的最好方式)。
对于Execute和Render的理解
对于BS系统而言要做的事情就是将数据传送给服务器,然后服务器经过一些的处理将处理后的数据展示出来。那么映射到上面说的两个阶段就是,将数据传给服务器而后服务器内部通过代码进行对数据的各种处理就是Execute阶段。在这个阶段中无论是通过get方式或者是通过post方式(其实还有其他的方式)提交的数据在服务器端被处理(Execute)。将处理后的数据通过HTML显示在浏览器上可以简单的理解为Render过程(此处不考虑其他异常情况),我们都知道在浏览器上那花花绿绿的页面其实都是一个个简单的字符,只不过这些字符是符合一定标准的(HTML),从而能被浏览器解析成呈现在我们面前的页面。所以说整个Render过程就是将要显示的数据通过HTML的形式发送给客户端(浏览器)的过程。
大致了说了一下JSF的声明周期,宏观的生命周期不仅仅对我们即将要详细了解的JSF的生命周期有指导性的作用,还会帮助我们更深刻的理解HTTP,理解BS。知识是需要在磨合的过程中才会被消化,吸收,排泄(写博客:D)的。