设为首页 收藏本站
查看: 1328|回复: 0

[经验分享] JSF 学习笔记

[复制链接]

尚未签到

发表于 2017-2-19 07:58:02 | 显示全部楼层 |阅读模式
  一种用于构建 Web 应用程序的新标准 Java 框架。
它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。
  对各角色人员好处:
  a. “企业开发人员”和 Web 设计人员:JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,
  b. “系统开发人员”:丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。
  c. 系统维护人员:良好构建 MVC 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。
DSC0000.png

  JSF于2004年3月1.0版正式提出,清楚的将Web应用程序的开发者分了三个角色:
  网页设计人员
  应用程序设计人员
  UI组件开发人员
  
JSF 生命周期:
  FacesServlet 充当用户和 JSF 应用程序之间的纽带。
  它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作。
    1. 当JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。
    2. FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。
    3. 接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。
  请求处理生命周期(6个阶段):
1. 恢复视图:
  为选定的视图找到或创建组件树
  一旦用户单击JSP页面上的链接或按钮,就会启动此阶段。
  JSF应用里的JSP页面被表示成一个组件树。
  JSF实现会进一步将这些组件链接到事件处理程序和验证程序,并将视图保存在FacesContext对象中,以备后面的处理过程所用。
  FacesContext对象包含了JSF用来管理当前会话中当前请求的GUI组件状态所需要的所有状态信息。
  2. 应用请求值:(数据类型验证)
  使用请求中发送来的值来更新组件树的组件值。
  因为请求中发送来的值都是String类型的,所以在更新组件树的组件值之前,必须将这些值转换为相应类型。
  这个过程也是解码。
  若转换有错误,这些错误将添加到FacesContext对象。
  3. 处理验证:(数据内容验证)
  当每个组件的本地值被更新后,Lifecycle对象都会根据这些注册组件的验证规则来验证这些值的合法性。
  如果输入的值不符合验证规则,就会将验证错误添加至FacesContext对象,并将组件标记为无效。
  JSF将转至呈现响应阶段,并显示带有验证错误消息的视图。
  如果没有遇到验证错误,JSF将进入下一阶段。
  4. 更新模型值:
  更新与组件相关的后台bean(也叫管理bean)或者模型对象的值。
  只有那些与组件值绑定在一起的Bean属性才会被更新。
  5. 调用应用程序:
  JSF控制器调用应用程序来处理应用程序级的事件,如提交一个表单。
  (此阶段可执行业务逻辑)
  6. 呈现响应:
  使用当前的显示技术(如JSP)显示选定的视图。
  注:
  由于请求处理生命周期里的应用请求值、处理验证、更新模型值和调用应用程序等阶段都可以在当前的请求对应的FacesContext实例中添加事件,因此,JSF实现必须在这些阶段后处理这些事件。
  参考:
  http://www.oschina.net/p/jsf/
  http://wenku.baidu.com/view/fad84209763231126edb1112.html
  JSF2.0 参考实现:
  What is Mojarra?
  > Mojarra is Sun's high performance, battle-tested implementation of JSF,
  and is used in IBM WebSphere™, Oracle WebLogic™, Oracle 10g Application Server, SpringSource dm Server™, and other popular enterprise platforms.
  > Like all of Java, Mojarra is open source, dual licensed with GPL+Classpath Exception and CDDL.
  > Mojarra was the first JSF runtime to support Groovy, and does so for all of JSF
  http://javaserverfaces.java.net/presentations/20090520-jsf2-datasheet.pdf
  JSF使用范例:
  1. 在Eclipse 3.5中使用JSF 2.0开发Web应用环境配置及一个简单例子
  http://www.unix-center.net/bbs/redirect.php?fid=70&tid=17884&goto=nextoldset
  注:JSF RI包含samples的最后版本是2.0.6(06/03/2011)。之后的版本只有一个类似于 javax.faces-2.1.6.jar的单一文件。
    这个文件也可以在glass fish的module目录里得到。
    2.0.6版本中的guessNumber例子存在一个bug,解决办法是在在construct方法中加入初始化maximum和minimum变量。如maximum=100;minimum=0;
    RI download at:http://javaserverfaces.java.net/download.html
  2. 运行mojarra-2.0.2例子
  http://www.cnblogs.com/haichang/archive/2010/01/14/1647510.html
  注:maven3和maven2不一样。
    这个例子中要求使用2,如果使用3,则会报类似以下错误:
    [ERROR] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-co
    mpiler-plugin must be a valid version but is 'RELEASE'. @ line 55, column 26

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-344018-1-1.html 上篇帖子: Ehcache 事务管理源码探析 下篇帖子: java 学习网站
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表