1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jsf源码

经过一段时间的学习,对JSF的认识也逐渐清晰。总结了一下JSF和structs的区别,首先在于分离了请求的处理。使用事件处理机制来代替原有的 request分发。其次在页面的展示上,采用组件的概念,而不是到处散落的html标记。再有,JSF对于请求的生命周期重新进行了划分,对于每个阶段都可以派遣事件,这使得整个请求的处理比较的清晰。最后,JSF对于页面的流转使用Navigation系统来处理,这一点感觉和structs还是比较类似的,只是换了一个概念。 从JSF的规范来看,JSF整体架构还是比较清晰,各个层次分的也挺明显。从总体上看,规范主要划分了application,context, lifecycle,render,component,validator,event,el几个部分,当然少不了主要的入口Servlet。有一点不太明白,大多数的类都是抽象类而不是接口,可能是为了规定层次吧,不允许多层次继承。下面简单以下介绍各个包的功能: 1.application:从定义上就可以看出来,这是应用级的。中间包括了Application主类,这是主要的程序入口,规范中最具有重量级的类,也是用来连接各个模块的。JSF规范使用工厂的模式,来创建相应的实现类.当然如果需要Application的实现,需要从 ApplicationFactory中取得。除了Application类,其中还包括了ViewHandler,这个主要负责View的 Renderer调配工作。而实现许多JSF整体架构,如果想定义自己的行为,一般上都会使用自身的ViewHandler,如facelets。 NavigationHandler的工作,不用说已经很明显,就是用来负责页面之间的导航。包中,还包括了view状态管理类-- StateManager,主要用于恢复view,以及保存view。目前一般使用Session来保存相应的view,当然也可以使用客户端来保存。其实,对于view状态的保存,非议还是挺多的,而且问题也比较多。 2.context:包括了主要的上下文环境类,如FacesContext和ExternalContext,前者是JSF的主要Context类,包括对 message的管理,Application的取得,以及ResponseWrite的引用。后者主要类似于作为外部环境的引用类,如 ServletContext和PortletContext.ResponseWriter,主要的服务端Writer,用于输出相应的html, xml内容,所有的Renderer都需要引用此类 3.lifecycle:这是JSF最大的特色,划分了请求的相应的处理阶段。规范中,只有两个类Lifecycle和LifecycleFactory。Lifecycle管理整个JSF请求的生命周期。通过指定的顺序执行相应的阶段。 4.webapp:定义了主要的Servlet,FacesServlet,主要的请求分发类,用于转换相应得faces为实际的资源。在规范中, Servlet并不是主要的初始化类,JSF 的初始化工作主要由具体的实现完成。在RI实现中,基本上由ConfigureListener完成初始化工作。而Servlet的任务只是简单的传递请求参数而已,以及调用相应的Lifecycle而已。 这里主要讲了JSF整体架构包,下面主要分析一下JSF相关组件的包。 这次主要分析一下JSF的相关组件包,也是JSF和structs主要不同的地方。JSF 规范中,对于组件的设计,和其他组件架构一样,分离表现层和模型层。对于组件的render由具体的Renderer来处理,这也达到了Model和 View分离的原则。 ◆component:所有的基本组件都在其中,如下的主要类图,对于各个组件就不一一详细介绍了。主要介绍一下几个接口: ◆StateHolder:用于表示在请求之间需要保存相应的状态信息,必须实现saveState和resotreState方法。 ◆ValueHolder:用于支持本地值的保持,用于访问model数据,通过表达式,支持转换。 ◆EditableValueHolder:用于表示那些可以编辑的组件值 ◆ActionSource:由UIComponet实现,用于作为ActionEvent的事件源,支持默认的ActionListener调用 ◆ActionSource2:这是最近的规范中增加的,提供了对于MethodExpression的支持。 ◆ContextCallback:用于组件执行相应的回调 ◆NamingContainer:标志接口,表示容器组件 ◆convert:包括了主要的Convert接口,以及内置的Convert实现类,主要的作用用于在页

文档评论(0)

sb9185sb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档