綠野仙棕

          常用鏈接

          統計

          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 土牛小屋 閱讀(3055) 評論(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(已滿)

            回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东明县| 睢宁县| 靖边县| 黄大仙区| 思茅市| 高平市| 潜山县| 莱州市| 奉化市| 沾化县| 永靖县| 叶城县| 迭部县| 金川县| 扬中市| 张北县| 本溪| 六安市| 临汾市| 昭平县| 枞阳县| 永川市| 荆州市| 镇沅| 安阳县| 兰州市| 前郭尔| 蚌埠市| 定安县| 华亭县| 赞皇县| 饶阳县| 兴和县| 托克托县| 肥城市| 吉首市| 五莲县| 鞍山市| 精河县| 周口市| 宝应县|