日期:2014-05-16  浏览次数:20446 次

JSF入门一(JSF简介)

本文参考

http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630

http://www.jdon.com/idea/jsf-struts.htm

?

JSF ? 体系结构是一种 ? Web ? 应用程序框架。它是 ? Java ? Community ? Process ? (JCP) ? 推动的,有望成为 ? Web ? 应用程序开发的标准框架。目前用于开发 ? Web ? 应用程序的框架有 ? 50 ? 多个,这说明迫切需要实现框架的标准化,这正是 ? JSF ? 框架的目标!

?

JSF与STRUTS的一个主要区别:

当我们需要监听Jsp页面表单中的input字段时,Struts只能通过JS绕弯实现,而JSF可以直接实现。

<h:inputText id="userId" value="#{login.userId}">
  <f:valueChangeListener
 type="logindemo.UserLoginChanged" />
</h:inputText>

#{login.userId}表示从名为login的JavaBean的getUserId获得的结果,这个功能使用struts也可以现,name="login" property="userId"

关键是第二行,这里表示如果userId的值改变并且确定提交后,将触发调用类UserLoginChanged processValueChanged(...)方法。

JSF可以为组件提供两种事件:Value Changed和 Action. 前者我们已经在上节见识过用处,后者就相当于struts中表单提交Action机制,它的JSF写法如下:

<h:commandButton id="login" commandName="login">
  <f:actionListener
 type=”logindemo.LoginActionListener” />
</h:commandButton>

?JSF是通过Listerner这样观察者模式贴在具体组件字段上的,而Struts此类事件是原始的一种表单提交Submit触发机制。如果说前者比较语言化(编程语言习惯做法类似Swing编程);后者是属于WEB化,因为它是来自Html表单,如果你起步是从Perl/PHP开始,反而容易接受Struts这种风格。

?

从网页设计人员的角度来看 ,JavaServer Faces提供了一套像是新版本的HTML标签,但它不是静态的,而是动态的 ,可以与后端的动态程序结合,但网页设计人员不需要理会后端的动态部份,网页设计人员甚至不太需要接触JSTL这类的标签,也可以动态的展现数据(像是动态的查询表格内容),JavaServer Faces提供标准的标签,这可以与网页编辑程序结合在一起,另一方面,JavaServer Faces也允许您自定义标签。

?

从应用程序设计人员的角度来看, JavaServer Faces提供一个与传统应用程序开发相类似的模型(当然因某些本质上的差异,模型还是稍有不同),他们可以基于事件驱动来开发程序,不必关切HTTP的处理细节,如果必须处理一些视觉组件的属性的话,他们也可以直接在整合开发环境上拖拉这些组件,点选设定组件的属性,JavaServer Faces甚至还为应用程序设计人员处理了对象与字符串(HTTP传送本质上就是字符串)间不匹配的转换问题。

?

若要全盘了解,其实JavaServer Faces是复杂的,每一个处理的环境都值得深入探讨,所以学习JavaServer Faces时,我选择从使用的角度来了解,这样花费的心力少一点。