绿野仙棕

常用链接

统计

hibernate技术

最新评论

JSF login例子

Core的作者说你可以把JavaServer Faces(JSF)看成“swing for server-side applications”,我想这是因为:
1、JSF里面定义了很多可用的UI部件(用户可自定义)。
2、JSF有消息驱动机制。

要用JSF,除了JDK和Tomcat(servlet container)之外,还要下载一个JavaServer Faces reference implementation,要用到里面的lib,现在sun网站上有1.1的版本。

一个简单的开发例子:
1、建立一个目录,这个目录是部署这个应用的单元(打包成.war),比如testJSF。
2、在这个目录下放置jsp页面。
3、在此目录下建立WEB-INF目录,在其中放置faces-config.xml和web.xml。
4、在WEB-INF目录下建立class和lib目录。
5、将bean的java code以包的形式放在class目录下(并且将它们编译)。
6、将必要的.jar放在lib目录下。
7、制作.war: jar cvf sample.war。
8、将.war放到tomcat/webapps下

接着就可以用http://localhost:8080/testJSF来访问了。

再分别把具体的东西解释下:

1、必要的jar有六个,你可以像上面那样放到.war里,也可以直接将他们放到tomcat/common/lib中,而且这样的话,你就不必在每个.war中包含它们 :
jsf/lib/jsf-api.jar
jsf/lib/jsf-impl.jar:jsf/lib/jsf-impl.jar
tomcat/server/lib/commons-digester.jar
tomcat/server/lib/commons-beanutils.jar
tomcat/webapps/jsp-examples/WEB-INF/lib/jstl.jar
tomcat/webapps/jsp-examples/WEB-INF/lib/standard.jar

2、bean class里面的getter和setter是前端和后端的管道,没什么好说的。

3、配置jsf国际化消息资源文件MessageBundle.properties(名字可以任意)

      login_username_lable=userName:
      login_password_lable=password:
      login_button_lable = login

      加载资源文件:

1 < f:loadBundle  basename ="com.jsfdemo.rocket.MessageBundle"  var ="bundle" />


      jsf页面中需要国际化的文字都可以在这里面配置,并用key值读取
      下面是在页面中使用的例子:

1 < h:outputLabel  value ="#{bundle.login_username_lable}" ></ h:outputLabel >
2 < h:outputLabel  value ="#{bundle.login_password_lable}" ></ h:outputLabel >
3 < h:commandButton  value ="#{bundle.login_button_lable}"  rendered ="true"  action ="#{UserBean.loginUser}"  id ="submit"   />

4、jsf的页面要包含两个标签的定义:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
(f: core tags; h: HTML tags.)

页面上似乎和struts差不多,看个例子:

 1 <% @ page language = " java "   pageEncoding = " utf-8 " %>
 2 <% @taglib uri = " http://java.sun.com/jsf/core "  prefix = " f " %>
 3 <% @taglib uri = " http://java.sun.com/jsf/html "  prefix = " h " %>
 4 < html >
 5    < head >
 6      < title > userLogin.jsp </ title >
 7    </ head >
 8 < body >
 9 < f:view >
10 <!-- 加载配置文件, var 为配置文件的别名 -->
11 < f:loadBundle  basename ="com.jsfdemo.rocket.MessageBundle"  var ="bundle" />
12 < h:form  id ="loginForm"  rendered ="true"   >
13   <!--  输入用户名 -->
14 < h:outputLabel  value ="#{bundle.login_username_lable}" ></ h:outputLabel >
15 < h:inputText  value ="#{UserBean.userName}"  rendered ="true"  required ="true"  id ="userName"   />
16 < h:outputText  value ="#{UserBean.userName}" >   </ h:outputText >
17   <!-- 输入密码 -->
18 < h:outputLabel  value ="#{bundle.login_password_lable}" ></ h:outputLabel >
19 < h:inputSecret  value ="#{UserBean.password}"  rendered ="true"  required ="true"  redisplay ="false"  id ="password"   />  
20 < h:outputText  value ="#{UserBean.password}" >   </ h:outputText >
21    <!-- Submit按钮,指定action -->
22 < h:commandButton  value ="#{bundle.login_button_lable}"  rendered ="true"  action ="#{UserBean.loginUser}"  id ="submit"   />
23 <!-- message 消息处理 -->
24 < h:message  for ="loginForm" ></ h:message >
25     </ h:form >
26    </ f:view >
27   </ body >
28 </ html >

接受用户输入用户名和密码,里面是普通的html标签和jsf的标签,没什么太多东西。如果用户名,密码错误则message标签
返回错误信息。

 1 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
 2 < html >
 3    < head >    
 4      < title > userLoginSuccess.jsp </ title >
 5
 6    </ head >
 7   
 8    < body >
 9    < f:view >
10    < h:outputText  value ="#{UserBean.userName}" ></ h:outputText > ,you success!!!
11    </ f:view >
12    </ body >
13 </ html >
14

输出UserBean的一个值(userName)。

5、两个xml的配置文件:

faces-config.xml的内容:

faces-config下面表明了从userLogin.jsp通过success这个action,如果成功则前进到userLoginSuccess.jsp。是不则通过fail这个action,返回到本页面。managerd-bean表明了UserBean的bean class,以及它的存活时间是在session级的。

再看web.xml:


 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < web-app  xmlns ="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"  version ="2.4"  xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
 3    < context-param >
 4      < param-name > javax.faces.CONFIG_FILES </ param-name >
 5      < param-value > /WEB-INF/faces-config.xml </ param-value >
 6    </ context-param >
 7    < servlet >
 8      < servlet-name > Faces Servlet </ servlet-name >
 9      < servlet-class > javax.faces.webapp.FacesServlet </ servlet-class >
10      < load-on-startup > 0 </ load-on-startup >
11    </ servlet >
12    < servlet-mapping >
13      < servlet-name > Faces Servlet </ servlet-name >
14      < url-pattern > *.faces </ url-pattern >
15    </ servlet-mapping >
16       < welcome-file-list >
17        < welcome-file > index.html </ welcome-file >
18     </ welcome-file-list >
19 </ web-app >
20
21

servlet-mapping指定了url的后缀,welcome-file-list指定初识页(可以用这个页面前进到某个其他页面)。

例子讲完了,再讲下jsf的处理周期:jsf页面有encoding和decoding的过程,前者将jsf的元素树变换成html页面,后者将页面的内容(form的数据等)变回jsf的元素,并由这些元素执行它们自己所定义的动作。 
6 UserName.java

posted on 2006-09-27 16:07 土牛小屋 阅读(3039) 评论(4)  编辑  收藏

评论

# re: JSF login例子 2006-09-27 16:21 坏男孩

写的很详细,谢过了!  回复  更多评论   

# re: JSF login例子 2006-09-28 09:44 123bingbing

www.mylinux.com.cn 包罗java,linux,数据库,安全等等技术资料,更有众多软件外包项目,所有项目直接与mylinux签署合同,保证用户的合法权利.
qq群:15096318(已满) 26343297(已满) 26343309(已满) 20767472(已满) 30440614(已满)21189212(已满)

  回复  更多评论   

# re: JSF login例子 2006-12-14 13:26 请输入你的姓名

请输入你的姓名  回复  更多评论   

# re: JSF login例子 2007-01-19 13:04 oiio

qq群:15096318(已满) 26343297(已满) 26343309(已满) 20767472(已满) 30440614(已满)21189212(已满) www.mylinux.com.cn 包罗java,linux,数据库,安全等等技术资料,更有众多软件外包项目,所有项目直接与mylinux签署合同,保证用户的合法权利.
qq群:15096318(已满) 26343297(已满) 26343309(已满) 20767472(已满) 30440614(已满)21189212(已满)

  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: