JSF入门
JSF实际上是对JSP的一种封装,其核心类还是servlet(javax.faces.webapp.FacesServlet)。JSF作为一种表现层的标准,为程序员提供了很多标签,将HTTP处理、数据转换等细节对程序员隐藏,是程序员只需要关注具体的业务逻辑而不需要过多的关注页面如何设计、美观。JavaServer Faces隐藏了许多细节,但是若要全盘了解,其实JavaServer Faces还是很复杂的,每一个处理的环境都值得深入探讨,所以学习JavaServer Faces时,您要选择的是通盘了解,还是从使用的角度来了解,这就决定了您学习时所要花费的心力。由于还是刚接触JSF,所以我只是对JSF初步的了解。
部署一个JSF项目需要一下jar包:
* jsf-impl.jar
* jsf-api.jar
* commons-digester.jar
* commons-collections.jar
* commons-beanutils.jar
* jstl.jar
* standard.jar
像其他的web应用一样,使用JSF也需要在web.xml中配置JSF的servlet请求。
web.xml:
02 <web-app xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
03 version=“2.5″
04 xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>
05 <servlet>
06 <servlet-name>Faces Servlet</servlet-name>
07 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
08 <load-on-startup>0</load-on-startup>
09 </servlet>
10 <servlet-mapping>
11 <servlet-name>Faces Servlet</servlet-name>
12 <url-pattern>*.faces</url-pattern>
13 </servlet-mapping>
14 <welcome-file-list>
15 <welcome-file>index.jsp</welcome-file>
16 </welcome-file-list>
17 </web-app>
在上面的定义中,我们将所有.faces的请求交由FaceServlet来处理,FaceServlet会唤起相对的.jsp网页,例如请求是/index.faces的话,则实际上会唤起/index.jsp网页(这一点很重要),完成以上的配置,您就可以开始使用JSF了。
在web.xml中除了定义JSF的servlet之外,还可以定义其他的一些关于JSF的信息,以下是其中一种。
2 <context-param>
3 <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
4 <param-value>client</param-value>
5 </context-param>
除了web.xml之外,JSF还有一个自己的xml配置文件,在该配置文件里可以配置JSF的导航信息。
faces-config.xml:
02
03 <faces-config xmlns=“http://java.sun.com/xml/ns/javaee”
04 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
05 xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd”
06 version=“1.2″>
07
08 <managed-bean>
09 <managed-bean-name>CalcBean</managed-bean-name>
10 <managed-bean-class>com.javachen.demo1.CalculatorController</managed-bean-class>
11 <managed-bean-scope>request</managed-bean-scope>
12 </managed-bean>
13
14 <navigation-rule>
15 <from-view-id>/calculator.jsp</from-view-id>
16 <navigation-case>
17 <from-outcome>success</from-outcome>
18 <to-view-id>/result.jsp</to-view-id>
19 </navigation-case>
20 </navigation-rule>
21 </faces-config>
根据上面的定义,当传回的字符串是”success”时,将前往result.jsp页面。在实际项目中,在该配置中配置导航比较麻烦,所以你还可以在代码中指定当传回的字符串是”success”时将前往哪一页面,这样做可以减少xml的配置工作。
对于JSF,每一个视图(View)都有一个独特的识别(identifier),称之为View ID,在JSF中的View ID是从Web应用程序的环境相对路径开始计算,设定时都是以/作为开头,如果您请求时的路径是/pages/index.faces,则JSF会将扩展名改为/pages/index.jsp,以此作为view-id。
在中的是个选择性的定义,它规定了来源页面的条件,中定义各种导览条件,定义当窗体结果符合的条件时,各自改导向哪一个目的页面,目的页面是在中定义。
您还可以在中加入,进一步规范窗体结果必须根据哪一个动作方法(action method),当中是使用 JSF Expression Language 来设定,例如:
02 <navigation-rule>
03 <from-view-id>/pages/index.jsp</from-view-id>
04 <navigation-case>
05 <from-action>#{user.verify}</from-action>
06 <from-outcome>success</from-outcome>
07 <to-view-id>/pages/welcome.jsp</to-view-id>
08 </navigation-case>
09 ….
10 </navigation-rule>
11 ….
在导航时,预设都是使用forward的方式,您可以在中加入一个,让JSF发出让浏览器重新导向(redirect)的header,让浏览器主动要求新网页.如果没有设定,表示来源网页不作限制,您也可以使用 * 显式的在定义档中表示。
JSF中的EL表达式(JSF Expression Language)
JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。
JSF EL是以#开始,将变量或表达式放置在Unknown macro: { 与 }之间。
注意:JSF标签的语法和JSP EL表达式相似,在很大程度上使用方法相同,只是JSP是以$开始。
Recent Comments