JSF学习笔记.docx

上传人:b****8 文档编号:10445631 上传时间:2023-02-11 格式:DOCX 页数:18 大小:68.96KB
下载 相关 举报
JSF学习笔记.docx_第1页
第1页 / 共18页
JSF学习笔记.docx_第2页
第2页 / 共18页
JSF学习笔记.docx_第3页
第3页 / 共18页
JSF学习笔记.docx_第4页
第4页 / 共18页
JSF学习笔记.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

JSF学习笔记.docx

《JSF学习笔记.docx》由会员分享,可在线阅读,更多相关《JSF学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。

JSF学习笔记.docx

JSF学习笔记

JavaServerFaces技术是一个基于Java技术的网页应用的服务端用户界面组件框架。

JavaServerFaces技术主要有以下组成:

●一个描绘UI组件、管理他们的状态,处理事件、服务端验证和数据转换,定义网页导航,国际化支持与可接入,以及为这些特性提供可扩展性的API。

●两个JSP公共标签库用于在一个JSP页面上表达UI组件和将组件写入服务端对象。

正如上图中显示,用JavaServerFaces技术创建的用户界面(图中的myUI)在服务端运行然后返回给客户端。

JSP页面,myform.jsp是一个包括了JavaServerFaces标签的JavaServerFaces页面。

它表示出了用以JavaServerFaces技术定义的公共标签的用户界面组件。

对于网页应用的UI(在图中为myUI)管理JSP页面引用的对象。

这些对象包括:

●映射到JSP页面上的标签UI组件对象

●在组件上注册的事件监听器,验证器,转换器。

●封装组件的数据和特定应用功能的JavaBean组件

什么是JavaServerFaces应用?

大多数情况下,一个JavaServerFaces应用就像其他的JavaWeb应用一样。

一个典型的JavaServerFaces应用包括下面的块:

●一组JSP页面(尽管不被限制用JSP页面作为显示技术)。

●一组backingbeans,它们是为一个页面上的UI组件定义属性以及功能的JavaBean组件。

●一个应用管理资源文件,它定义页面导航规则以及配置beans和其他例如一个公共组件的公共对象。

●一个部署描述符(一个web.xml文件)。

●可能有一组由应用开发者创建的公共对象。

这些对象可能包括公共组件,验证器,转换器或者监听器。

●一组用于在一个页面上显示公共对象的公共标签。

一个简单的JavaServerFaces应用中的开发角色:

●页面作者,用JavaServerFaces标签库创建页面。

●应用开发人员,编写公共转换器,验证器,监听器和backingbeans。

●组件作者,创建公共UI组件和体现程序。

●应用架构师,管理应用,包括定义导航规则,配置公共对象以及创建部署描述符。

开发过程步骤:

●映射FacesServlet实例。

●用UI组件和核心标签创建页面。

●在应用配置资源文件中定义页面导航。

●开发backingbeans。

●向应用配置资源文件增加管理bean的声明。

第一个JSF应用:

打开MyEclipse,创建一个WebProject,项目名称命名为guessNumber,点击Finish创建结束。

在项目名称上右击弹出菜单中,选择MyEclipse-》AddJSFCapabilities,在AddJSFCapabilities对话框中,点击Finish。

在WebRoot,创建greeting.jsp和response.jsp,greeting.jsp内容如下:

<%@pagelanguage="java"pageEncoding="UTF-8"%>

<%@tagliburi="prefix="h"%>

<%@tagliburi="prefix="f"%>

Hello

view>

formid="helloForm">

Hi.MynameisDuke.I'mthinkingofanumberfrom

outputTextlang="en_US"value="#{UserNumberBean.minimum}"/>to

outputTextvalue="#{UserNumberBean.maximum}"/>.Canyouguess

it?

inputTextid="userNo"label="UserNumber"value="#{UserNumberBean.userNumber}"

converterMessage="#{ErrMsg.userNoConvert}">

validateLongRangeminimum="#{UserNumberBean.minimum}"maximum="#{UserNumberBean.maximum}"/>

inputText>

commandButtonid="submit"action="success"value="Submit"/>

messagestyle="color:

red;font-family:

'NewCenturySchoolbook',serif;font-style:

oblique;text-decoration:

overline"id="errors1"for="userNo"/>

form>

view>

Response.jsp内容如下:

<%@pagelanguage="java"pageEncoding="UTF-8"%>

<%@tagliburi="prefix="h"%>

<%@tagliburi="prefix="f"%>

GuessTheNumber

view>

formid="responseForm">

outputTextid="result"

value="#{UserNumberBean.response}"/>

commandButtonid="back"value="Back"action="success"/>

form>

view>

修改index.jsp内容如下:

<%@pagelanguage="java"pageEncoding="UTF-8"%>

forwardpage="greeting.faces"/>

在WebRoot下的WEB-INF文件夹下,打开faces-config.xml。

修改内容如下:

xmlversion='1.0'encoding='UTF-8'?

>

--

Copyright2004-2006SunMicrosystems,Inc.Allrightsreserved.

SUNPROPRIETARY/CONFIDENTIAL.Useissubjecttolicenseterms.

-->

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

version="1.2">

guessNumber.ApplicationMessages

ErrMsg

en

de

fr

es

ThedecisionruleusedbytheNavigationHandlerto

determinewhichviewmustbedisplayedafterthe

currentview,greeting.jspisprocessed.

/greeting.jsp

IndicatestotheNavigationHandlerthattheresponse.jsp

viewmustbedisplayediftheActionreferencedbya

UICommandcomponentonthegreeting.jspviewreturns

theoutcome"success".

success

/response.jsp

ThedecisionrulesusedbytheNavigationHandlerto

determinewhichviewmustbedisplayedafterthe

currentview,response.jspisprocessed.

/response.jsp

IndicatestotheNavigationHandlerthatthegreeting.jsp

viewmustbedisplayediftheActionreferencedbya

UICommandcomponentontheresponse.jspviewreturns

theoutcome"success".

success

/greeting.jsp

ThebackingbeanthatbacksuptheguessNumberWebapplication

UserNumberBean

guessNumber.UserNumberBean

session

minimum

long

0

maximum

long

10

在src文件夹中,创建包guessNumber,在包guessNumber中,创建类UserNumberBean。

内容如下:

packageguessNumber;

importponent.UIComponent;

importjavax.faces.context.FacesContext;

importjavax.faces.validator.LongRangeValidator;

importjavax.faces.validator.Validator;

importjavax.faces.validator.ValidatorException;

importjava.util.Random;

publicclassUserNumberBean{

IntegerrandomInt=null;

IntegeruserNumber=null;

Stringresponse=null;

privatebooleanmaximumSet=false;

privatebooleanminimumSet=false;

privatelongmaximum=0;

privatelongminimum=0;

publicUserNumberBean(){

RandomrandomGR=newRandom();

randomInt=newInteger(randomGR.nextInt(10));

System.out.println("Duke'snumber:

"+randomInt);

}

publicvoidsetUserNumber(Integeruser_number){

userNumber=user_number;

}

publicIntegergetUserNumber(){

returnuserNumber;

}

publicStringgetResponse(){

if((userNumber!

=null)&&(userNpareTo(randomInt)==0)){

return"Yay!

Yougotit!

";

}else{

return"Sorry,"+userNumber+"isincorrect.";

}

}

publiclonggetMaximum(){

return(this.maximum);

}

publicvoidsetMaximum(longmaximum){

this.maximum=maximum;

this.maximumSet=true;

}

publiclonggetMinimum(){

return(this.minimum);

}

publicvoidsetMinimum(longminimum){

this.minimum=minimum;

this.minimumSet=true;

}

}

在包guessNumber中,创建文件“ApplicationMessages.properties”,内容如下:

userNoConvert=Thevalueyouenteredisnotanumber.

至此,第一个JSF应用就创建结束。

下面来测试是否成功。

在项目上右击弹出菜单中选择RunAs-》MyEclipseServerApplication,选择JBoss5.X应用服务器,点击OK。

然后在浏览器中键入http:

//localhost:

8080/guessNumber,运行成功则说明部署正确了。

配置Web应用程序的web.xml,使用JSF时,所有的请求都透过FacesServlet来处理,您可以如下定义:

web.xml

xmlversion="1.0"encoding="ISO-8859-1"?

>

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

version="2.4">

JSFDemo

JSFDemo

FacesServlet

javax.faces.webapp.FacesServlet

1

FacesServlet

*.faces

index.html

在上面的定义中,我们将所有.faces的请求交由FaceServlet来处理,FaceServlet会唤起相对的.jsp网页,例如请求是/index.faces的话,则实际上会唤起/index.jsp网页,完成以上的配置,您就可以开始使用JSF了。

JSFEL(ExpressionLanguage)的变量名也可以程序执行过程中所宣告的名称,或是JSFEL预设的隐含对象,例如下面的程序使用param隐含对象来取得使用者输入的参数:

<%@tagliburi="prefix="f"%>

<%@tagliburi="prefix="h"%>

<%@pagecontentType="text/html;charset=Big5"%>

view>

您好,

outputTextvalue="#{param.name}"/>

view>

  param是JSFEL预设的隐含对象变量,它代表request所有参数的集合,实际是一个java.util.Map型态对象,JSF所提供的隐含对象,大致上对应于JSP隐含物件,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于javax.faces.context.FacesContext与ponent.UIViewRoot。

在JSF頁面上要取得Bean的屬性,是使用JSF表示語言(ExpressionLanguage),要注意到的是,JSF表示語言是寫成#{expression},而JSP表示語言是寫成${expression},因為表示層可能是使用JSP,所以必須特別區分,另外要注意的是,JSF的標籤上之屬性設定時,只接受JSF表示語言。

Beans上的List,Map

如果您的Bean上有接受List或Map型态的属性,则您也可以在组态档案中直接设定这些属性的值,一个例子如下:

....

someBean

onlyfun.caterpillar.SomeBean

session

someProperty

java.lang.Integer

1

2

3

....

  这是一个设定接受List型态的属性,我们使用卷标指定将设定一个List对象,其中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1