学习JSF有一段时间了,从刚开始对JSF的好奇到现在对JSF的渐渐熟悉,花费了不少时间,但所获还是甚少。提到JSF,我们总喜欢把它跟jsp作比较,这很正常。我认为JSF是站在jsp这个巨人的肩膀上,才能有如此的成就。JSF看似像是一个类似于struts的框架,但又不仅是如此。虽然 Struts和JSF都属于表现层框架,但两者分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架。从技术上说,JSF提供了一套类似于html的统一标签,但这种标签不是简单的静态标签,而是动态的。
学习JSF的起步,我们按照惯例先从一个demo开始。在使用eclipse开发***个JSF的demo前,先要去下载JSF的几个jar包:JSF-impl.jar,JSF- api.jar,commons-digester.jar,commons-collections.jar,commons- beanutils.jar,jstl.jar,standard.jar。你可以把他们先放到Web应用程序的/WEB-INF/lib目录下,或者以后再添加进去。
在eclipse中新建一个JSF项目,“新建”—“web project”,它跟创建一个jsp项目完全相同。完成后,右键项目名,选择“myeclipse”—“add JSF facelets capabilities……”,这相当于添加了对JSF的支持平台。打开项目,我们可以看到熟悉的文件路径,几个jar包,webroot文件夹,index.jsp,web.xml文件等。不过这个多了一个face-config文件,这也是JSF项目与jsp项目的***不同之处。接下来,我们要配置web.xml文件,还有faces-config文件。
如果你以前使用过struts,那么你肯定熟悉struts里面的struts-config文件,它与faces-config何其相似。faces-config的参数配置主要有以下几个:
1.navigation- rule(导航规则)。它由<from-view-id>(起始页面),<navigation-case>(导航案例)两部分组成。在“导航案例”中,有<from-action>(导航动作),<from-outcome>(导航结果),<to-view-id>(目的页面)等。通过这个配置,我们告诉web应用程序在什么时候跳转,如何跳转,以及从哪个页面跳转到哪个页面。
2.managed-bean(托管bean)。托管bean主要有以下几个部分:<managed-bean-name>(托管bean的实例名),<managed-bean-class>(托管bean类的全名),<managed-bean-scope>(托管 bean的作用域)。scope有none,request,session,applicaton等。application不常用,用得较多的就是 session和request了。request表示bean的存活时间为程序请求阶段,而session的存活时间为程序交互开始,直到浏览器关闭或者会话结束。在faces-config的“design”视图中,我们可以很方便地进行配置,
下一步,我们开始在eclipse中编辑学习JSF页面的内容,为了简便,我们直接对index.jsp页面进行修改。在页头我们需要添加一些jsp的page指令和常用的html,head和body标签(有的已经自动生成),如以下:
◆<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" language="java"%>
◆<html><head><title>……
同时,还要添加声明2个JSF标准的标签库描述文件:
◆<%@ taglib uri="http://java.sun.com/JSF/core" prefix="f"%>(JSF标记标签)
◆<%@ taglib uri="http://java.sun.com/JSF/html" prefix="h"%>(JSF的html用户界面组件标签)
此外,页面中还需要加入view和form标签,因为所有的JSF组件标签必须定义在view这个标签之内。
【编辑推荐】