a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 178|回复: 1

[专业语言] JAVA认证:浅析JSF和JSP是新的搭档

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。但以Java为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。因此,设计JSP页面就变得十分复杂和繁琐…' Q+ p  M& X8 p  |6 c
    Java在最近几年逐渐升温,随着Java SE 5和Java SE 6的推出,Java的未来更显得无比辉煌。但以Java为基础的JSP在Java SE 5推出之前却一直抬不起头来,这最重要的原因就是JSP虽然功能十分强大,但最大的优点也是它的最大缺点,功能强大就意味着复杂,尤其是设计前端界面的可视化工具不多,也不够强大。因此,设计JSP页面就变得十分复杂和繁琐。不过,在Java SE 5推出的同时,Sun为了简化JSP的开发难度,推出了新的JavaServer Faces(简称JSF)规范。从而使JSP走上了康庄大道。* n" y. P  t% f) r8 C" Z
    作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTable 这样的表格组件, Tree 这样的树形组件等等。
. A% q  b" k$ X    作为一种标准的技术,JSF还得到了相当多工具提供商的支持。同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。另外我们也有一些很优秀的商业开发工具可共选择,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 这样的基于 Eclipse 的插件开发工具,为现在广大的 Eclipse 用户带来了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不错的支持 JSF 可视化开发的商业开发工具。$ z' z' n1 ?. k
    JSF和传统的Web技术有着本质上的差别,在传统的Web技术需要用户自己对浏览器请求进行捕捉,保存客户端状态,并且手工控制着页面的转向,等等。而JSF的出现,无疑给我们带来了巨大的便利,JSF 提供了事件驱动的页面导航模型,该模型使应用程序开发人员能够设计应用程序的页面流。与 Struts 的方式向类似的是,所有的页面流信息都定义在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬编码在应用程序中。这很大程度简化了开发人员开发难度,简化了应用程序的开发。
7 v1 ?3 N; N" u5 a6 `    同时JSF也是一种遵循模型-视图-控制器 (MVC) 模式的框架。实现了视图代码(View)与应用逻辑(Model)的完全分离,使得使用 JSF 技术的应用程序能够很好的实现页面与代码的分离。所有对 JSF 页面的请求都会通过一个前端控制器 (FacesServlet) 处理,系统自动处理用户的请求,并将结果返回给用户。这和传统的 MVC 框架并没有太大的区别。
6 Z) @5 {2 A" {' F, s; k, q+ g7 P- X    在JSF中不仅使用了 POJO 技术,而且还使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。
4 h- W& C. Q3 e# m9 Y. A    如何在JSP中使用JSF
/ f4 e" f: v1 O    只有通过JSF和JSP相结合,才能充分发挥它的功效。JSF是通过标签库和JSP 进行集成的。标签库就相当于ASP.NET的服务端组件。JSF提供了非常丰富的标签库,通过这些标签库,可以生成各种客户端模型,如HTML、WML、 XML以及JavaScript等。通过这些标签,你可以很容易建立大规模的客户端模型,并由这些标签自动处理客户端请求。
, F  `+ x: d7 {6 P! a   接下来让我们来看一个如何使JSF和JSP在一起工作的例子。在JSF中有两个库。第一个叫做内核库,在这个库中包含了各种主要的标签,如配置组件、管理事件、验证输入信息等。第二个库的主要功能是将HTML和JSF的各种标签相对应。每一个JSF标签都会对应一个HTML组件。如UIInput标签对应了HTML中的文本框或密码框。# I  t. P$ P5 v" l' z. r
    在JSF标签中文本输入框叫做inputText,而密码输入库叫inputSecret.下面是一个简单的JSF和JSP结合的用户接口程序。
! P/ {: v. o4 r3 g+ C+ |$ R   
0 b: u0 P+ v) \( o/ p- p/ S   
6 B1 O) v. y9 N: ?9 u5 S: a: B! z   
6 H% t( b! H+ H/ n# Z   
$ E4 g# ?) l8 [* l   
; L" [! X! [8 y- B/ }$ I    第一个JSF程序
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:44:45 | 显示全部楼层

JAVA认证:浅析JSF和JSP是新的搭档

在上面的代码中,我们可以了解到JSF是如何同JSP集成的。我们首先可以看到一个内核标签:view.然后是几个JSF组件。如form、 outputText、inputText以及commandButton.这几个组件被放到form中从而开成了form中的一部分。在程序的最开始,必须使用import导入两个标签库。代码如下。
7 b0 ?0 f% t) l% u4 `2 K, }   
: V; r- W0 N. Y0 G. \    * |) C/ }$ N% y& U  U& D; ?
    上面2行代码声明了JSP中要使用哪一个JSF标签库。内核库使用前缀(prefix)f声明,而HTML库使用前缀(prefix)h声明。这两个前缀并不是必须要使用,而只是一个建议。在程序中,内核库必须要使用,因为view在所有的 JSF页中必须使用。而HTML标签在运行时将JSF标签转化为HTML组件,这个h前缀并不是必须的,而是JSF规范推荐使用的,这样,我们使我们的 JSF程序更易读。. }& t. @, X$ D& S
    在声明后是几行标准的HTML语句,本文不再详述。从 f:view 开始,是一段JSF语句。这段代码如下所示:
; g# D: ?- k6 W" B, w5 F5 S+ F   
* D! q. X/ O  I/ U' \3 o   
) O- a  q7 `8 w( r. S& L" L" d    ! Z) X& c% y5 p( U
   
2 ]8 a4 L6 R" ^- b4 t   
: W/ L1 ]: _0 `. @    , l9 Q' \* F; j( A7 f1 S. t- {
    # c- u6 L. P. E* m
   
6 M1 R$ D& c2 q0 b% m  A9 n      W1 D; h8 y& x. u
    % B4 @( }3 }' M+ j- G
    /f:view 标签预示着JSF的开始,而它的下一个标签form将建立一个HTML Form.而outputText标签相当于HTML中的label组件。inputText标签相当于HTML中的textField组件。而 commandButton标签相当于HTML中的submit按钮。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 21:50 , Processed in 0.517791 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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