jwebee

          jwebee

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            11 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

          #

          想給全球50億手機(jī)用戶(hù)開(kāi)發(fā)軟件嗎?本信息來(lái)源于趕集網(wǎng)ganji.com
          你想在移動(dòng)互聯(lián)網(wǎng)行業(yè)創(chuàng)業(yè)?我們教你!
          你想學(xué)習(xí)智能手機(jī)開(kāi)發(fā),我們教你!
          你想做一個(gè)產(chǎn)品,我們幫你!
          你想。。。
          讓創(chuàng)新辦公室來(lái)實(shí)現(xiàn)您的夢(mèng)想!

          合作模式
          第一階段:Android/Ophone/樂(lè)phone培訓(xùn)(收費(fèi))
          第二階段:承接外包項(xiàng)目或合作開(kāi)發(fā)項(xiàng)目(分成)

          用3-6個(gè)月時(shí)間,和我們一起工作、成長(zhǎng),使你變成程序天才
          給你外包項(xiàng)目或合作項(xiàng)目,培養(yǎng)您的綜合(自學(xué)、演講、管理)能力
          教您如何在移動(dòng)互聯(lián)網(wǎng)市場(chǎng)強(qiáng)得先機(jī),賺取你人生的第一桶金
          如果您離開(kāi)創(chuàng)新辦公室,我們幫你創(chuàng)業(yè)或介紹進(jìn)入公司工作

          每周末免費(fèi)3G技術(shù)講座,敬請(qǐng)預(yù)約!

          電話(huà):029-68062269
          qq:1203740654
          地址:西安市富裕路中段(外事學(xué)院北校區(qū)西行100米)

          posted @ 2010-09-17 17:15 jwebee 閱讀(101) | 評(píng)論 (0)編輯 收藏

          JSF的國(guó)際化(Internnationalization)訊息處理是基於Java對(duì)國(guó)際化的支援,您可以在一個(gè)訊息資源檔中統(tǒng)一管理訊息資源,資源檔的名稱(chēng)是.properties,而內(nèi)容是名稱(chēng)與值的配對(duì),例如:
          • messages.properties
           
          titleText=JSF Demo
          hintText=Please input your name and password
          nameText=name
          passText=password
          commandText=Submit

           

          資源檔名稱(chēng)由basename加上語(yǔ)言與地區(qū)來(lái)組成,例如:
          • basename.properties
          • basename_en.properties
          • basename_zh_TW.properties

           

          沒(méi)有指定語(yǔ)言與地區(qū)的basename是預(yù)設(shè)的資源檔名稱(chēng),JSF會(huì)根據(jù)瀏覽器送來(lái)的Accept-Language header中的內(nèi)容來(lái)決定該使用哪一個(gè)資源檔名稱(chēng),例如:

           

          Accept-Language: zh_TW, en-US, en

           

          如果瀏覽器送來(lái)這些header,則預(yù)設(shè)會(huì)使用繁體中文,接著是美式英文,再來(lái)是英文語(yǔ)系,如果找不到對(duì)應(yīng)的訊息資源檔,則會(huì)使用預(yù)設(shè)的訊息資源檔。

           

          由於訊息資源檔必須是ISO-8859-1編碼,所以對(duì)於非西方語(yǔ)系的處理,必須先將之轉(zhuǎn)換為Java Unicode Escape格式,例如您可以先在訊息資源檔中寫(xiě)下以下的內(nèi)容:
          • messages_zh_TW.txt
           
          titleText=JSF示範(fàn)
          hintText=請(qǐng)輸入名稱(chēng)與密碼
          nameText=名稱(chēng)
          passText=密碼
          commandText=送出

           

          然後使用JDK的工具程式native2ascii來(lái)轉(zhuǎn)換,例如:

           

          native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties

           

          轉(zhuǎn)換後的內(nèi)容會(huì)如下:
          • messages_zh_TW.properties
           
          titleText=JSF\u793a\u7bc4
          hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc
          nameText=\u540d\u7a31
          passText=\u5bc6\u78bc
          commandText=\u9001\u51fa

           

          接下來(lái)您可以使用<f:loadBundle>標(biāo)籤來(lái)指定載入訊息資源,一個(gè)例子如下:
          • index.jsp
           
          <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
          <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
          <%@page contentType="text/html;charset=UTF-8"%>

          <f:view>
          <f:loadBundle basename="messages" var="msgs"/>

          <html>
          <head>
          <title><h:outputText value="#{msgs.titleText}"/></title>
          </head>
          <body>

          <h:form>
          <h3><h:outputText value="#{msgs.hintText}"/></h3>
          <h:outputText value="#{msgs.nameText}"/>:
          <h:inputText value="#{user.name}"/><p>
          <h:outputText value="#{msgs.passText}"/>:
          <h:inputSecret value="#{user.password}"/><p>
          <h:commandButton value="#{msgs.commandText}"
          actionListener="#{user.verify}"
          action="#{user.outcome}"/>
          </h:form>

          </body>
          </html>

          </f:view>

           

          如此一來(lái),如果您的瀏覽器預(yù)設(shè)接受zh_TW語(yǔ)系的話(huà),則頁(yè)面上就可以顯示中文,否則預(yù)設(shè)將以英文顯示,也就是messages.properties的內(nèi)容,為了能顯示多國(guó)語(yǔ)系,我們?cè)O(shè)定網(wǎng)頁(yè)編碼為UTF8。

           

          <f:view>可以設(shè)定locale屬性,直接指定所要使用的語(yǔ)系,例如:
           
          <f:view locale="zh_TW">
          <f:loadBundle basename="messages" var="msgs"/>

           

          直接指定以上的話(huà),則會(huì)使用繁體中文來(lái)顯示,JSF會(huì)根據(jù)<f:loadBundle>的basename屬性加上<f:view>的locale屬性來(lái)決定要使用哪一個(gè)訊息資源檔,就上例而言,就是使用 messages_zh_TW.properties,如果設(shè)定為以下的話(huà),就會(huì)使用messages_en.properties:
           
          <f:view locale="en">
          <f:loadBundle basename="messages" var="msgs"/>

           

          您也可以在faces-config.xml中設(shè)定語(yǔ)系,例如:
           
          <faces-config>
          <application>
          <local-config>
          <default-locale>en</default-locale>
          <supported-locale>zh_TW</supported-locale>
          </local-config>
          </application>

          .....
          </faces-config>

           

          在<local-config>一定有一個(gè)<default-locale>,而<supported- locale>可以有好幾個(gè),這告訴JSF您的應(yīng)用程式支援哪些語(yǔ)系。

           

          當(dāng)然,如果您可以提供一個(gè)選項(xiàng)讓使用者選擇自己的語(yǔ)系會(huì)是更好的方式,例如根據(jù)user這個(gè)Bean的locale屬性來(lái)決定頁(yè)面語(yǔ)系:
           
          <f:view locale="#{user.locale}">
          <f:loadBundle basename="messages" var="msgs"/>

           

          在頁(yè)面中設(shè)定一個(gè)表單,可以讓使用者選擇語(yǔ)系,例如設(shè)定單選鈕:
           
          <h:selectOneRadio value="#{user.locale}">
          <f:selectItem itemValue="zh_TW"
          itemLabel="#{msgs.zh_TWText}"/>
          <f:selectItem itemValue="en"
          itemLabel="#{msgs.enText}"/>
          </h:selectOneRadio>



          周行 2008-05-22 12:39 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/I18NMessages.html
          posted @ 2008-05-22 12:39 jwebee 閱讀(122) | 評(píng)論 (0)編輯 收藏

          JSF Expression Language 搭配 JSF 標(biāo)籤來(lái)使用,是用來(lái)存取資料物件的一個(gè)簡(jiǎn)易語(yǔ)言。

           

          JSF EL是以#開(kāi)始,將變數(shù)或運(yùn)算式放置在 { 與 } 之間,例如:
           
          #{someBeanName}

           

          變數(shù)名稱(chēng)可以是faces-config.xml中定義的名稱(chēng),如果是Bean的話(huà),可以透過(guò)使用 '.' 運(yùn)算子來(lái)存取它的屬性,例如:
           
          ...
          <f:view>
          <h:outputText value="#{userBean.name}"/>
          </f:view>
          ...

           

          在JSF標(biāo)籤的屬性上," 與 " (或'與')之間如果含有EL,則會(huì)加以運(yùn)算,您也可以這麼使用它:
           
          ...
          <f:view>
          名稱(chēng), 年齡:<h:outputText
          value="#{userBean.name}, #{userBean.age}"/>
          </f:view>
          ...

           

          一個(gè)執(zhí)行的結(jié)果可能是這樣顯示的:
           
          名稱(chēng), 年齡:Justin, 29

           

          EL的變數(shù)名也可以程式執(zhí)行過(guò)程中所宣告的名稱(chēng),或是JSF EL預(yù)設(shè)的隱含物件,例如下面的程式使用param隱含物件來(lái)取得使用者輸入的參數(shù):
           
          <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
          <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
          <%@page contentType="text/html; charset=Big5"%>

          <html>
          <head>
          <title></title>
          </head>
          <body>
          <f:view>
          <b> 您好, <h:outputText value="#{param.name}"/> </b>
          </f:view>

          </body>
          </html>

           

          param是JSF EL預(yù)設(shè)的隱含物件變數(shù),它代表request所有參數(shù)的集合,實(shí)際是一個(gè)java.util.Map型態(tài)物件,JSF所提供的隱含物件,大致上對(duì)應(yīng)於 JSP 隱含物件,不過(guò)JSF隱含物件移除了pageScope與pageContext,而增加了facesContext與view,它們分別對(duì)應(yīng)於 javax.faces.context.FacesContext與javax.faces.component.UIViewRoot。

           

          對(duì)於Map型態(tài)物件,我們可以使用 '.' 運(yùn)算子指定key值來(lái)取出對(duì)應(yīng)的value,也可以使用 [ 與 ] 來(lái)指定,例如:
           
          ...
          <f:view>
          <b> 您好, <h:outputText value="#{param['name']}"/> </b>
          </f:view>
          ...

           

          在 [ 與 ] 之間,也可以放置其它的變數(shù)值,例如:
           
          ...
          <f:view>
          <h:outputText value="#{someBean.someMap[user.name]}"/>
          </f:view>
          ...

           

          如果變數(shù)是List型態(tài)或陣列的話(huà),則可以在 [] 中指定索引,例如:
           
          ....
          <f:view>
          <h:outputText value="#{someBean.someList[0]}"/>
          <h:outputText value="#{someBean.someArray[1]}"/>
          <h:outputText
          value="#{someBean.someListOrArray[user.age]}"/>
          </f:view>
          ....

           

          您也可以指定字面常數(shù),對(duì)於true、false、字串、數(shù)字,JSF EL會(huì)嘗試進(jìn)行轉(zhuǎn)換,例如:
           
          ....
          <h:outputText value="#{true}"/>
          ....

          <h:outputText value="#{'This is a test'}"/>
          ....

           

          如果要輸出字串,必須以單引號(hào) ' 或雙引數(shù) " 括住,如此才不會(huì)被認(rèn)為是變數(shù)名稱(chēng)。

           

          在宣告變數(shù)名稱(chēng)時(shí),要留意不可與JSF的保留字或關(guān)鍵字同名,例如不可取以下這些名稱(chēng):
           
          true false null div mod and or not eq ne lt gt le ge instanceof empty

           

          使用EL,您可以直接實(shí)行一些算術(shù)運(yùn)算、邏輯運(yùn)算與關(guān)係運(yùn)算,其使用就如同在一般常見(jiàn)的程式語(yǔ)言中之運(yùn)算。

           

          算術(shù)運(yùn)算子有:加法 (+), 減法 (-), 乘法 (*), 除法 (/ or div) 與餘除 (% or mod) 。下面是算術(shù)運(yùn)算的一些例子:
          運(yùn)算式 結(jié)果
          #{1} 1
          #{1 + 2} 3
          #{1.2 + 2.3} 3.5
          #{1.2E4 + 1.4} 12001.4
          #{-4 - 2} -6
          #{21 * 2} 42
          #{3/4} 0.75
          #{3 div 4} 0.75,除法
          #{3/0} Infinity
          #{10%4} 2
          #{10 mod 4} 2,也是餘除
          #{(1==2) ? 3 : 4} 4

           

          如同在Java語(yǔ)法一樣 ( expression ? result1 : result2)是個(gè)三元運(yùn)算,expression為true顯示result1,false顯示result2。

           

          邏輯運(yùn)算有:and(或&&)、or(或!!)、not(或!)。一些例子為:
          運(yùn)算式 結(jié)果
          #{true and false} false
          #{true or false} true
          #{not true} false

           

          關(guān)係運(yùn)算有:小於Less-than (< or lt)、大於Greater-than (> or gt)、小於或等於Less-than-or-equal (<= or le)、大於或等於Greater-than-or-equal (>= or ge)、等於Equal (== or eq)、不等於Not Equal (!= or ne),由英文名稱(chēng)可以得到lt、gt等運(yùn)算子之縮寫(xiě)詞,以下是Tomcat的一些例子:
          運(yùn)算式 結(jié)果
          #{1 < 2} true
          #{1 lt 2} true
          #{1 > (4/2)} false
          #{1 > (4/2)} false
          #{4.0 >= 3} true
          #{4.0 ge 3} true
          #{4 <= 3} false
          #{4 le 3} false
          #{100.0 == 100} true
          #{100.0 eq 100} true
          #{(10*10) != 100} false
          #{(10*10) ne 100} false

           

          左邊是運(yùn)算子的使用方式,右邊的是運(yùn)算結(jié)果,關(guān)係運(yùn)算也可以用來(lái)比較字元或字串,按字典順序來(lái)決定比較結(jié)果,例如:
          運(yùn)算式 結(jié)果
          #{'a' < 'b'} true
          #{'hip' > 'hit'} false
          #{'4' > 3} true

           

          EL運(yùn)算子的執(zhí)行優(yōu)先順序與Java運(yùn)算子對(duì)應(yīng),如果有疑慮的話(huà),也可以使用括號(hào)()來(lái)自行決定先後順序。

           




          周行 2008-05-22 12:38 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html
          posted @ 2008-05-22 12:38 jwebee 閱讀(176) | 評(píng)論 (0)編輯 收藏

          在JSF中是根據(jù)faces-config.xml中<navigation-rule>設(shè)定,以決定在符合的條件成立時(shí),該連結(jié)至哪一個(gè)頁(yè)面,一個(gè)基本的設(shè)定如下:
           
          ....
          <navigation-rule>
          <from-view-id>/pages/index.jsp</from-view-id>
          <navigation-case>
          <from-outcome>success</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          </navigation-case>
          <navigation-case>
          <from-outcome>failure</from-outcome>
          <to-view-id>/pages/index.jsp</to-view-id>
          </navigation-case>
          </navigation-rule>
          ....

           

          對(duì)於JSF,每一個(gè)視圖(View)都有一個(gè)獨(dú)特的識(shí)別(identifier),稱(chēng)之為View ID,在JSF中的View ID是從Web應(yīng)用程式的環(huán)境相對(duì)路徑開(kāi)始計(jì)算,設(shè)定時(shí)都是以/作為開(kāi)頭,如果您請(qǐng)求時(shí)的路徑是/pages/index.faces,則JSF會(huì)將副檔名改為/pages/index.jsp,以此作為view-id。

           

          在<navigation-rule>中的<from-view-id>是個(gè)選擇性的定義,它規(guī)定了來(lái)源頁(yè)面的條件,<navigation-case>中定義各種導(dǎo)覽條件,<from-outcome>定義當(dāng)表單結(jié)果符合的條件時(shí),各自改導(dǎo)向哪一個(gè)目的頁(yè)面,目的頁(yè)面是在<to-view-id>中定義。

           

          您還可以在<navigation-case>中加入<from-action>,進(jìn)一步規(guī)範(fàn)表單結(jié)果必須根據(jù)哪一個(gè)動(dòng)作方法(action method),當(dāng)中是使用 JSF Expression Language 來(lái)設(shè)定,例如:
           
          ....
          <navigation-rule>
          <from-view-id>/pages/index.jsp</from-view-id>
          <navigation-case>
          <from-action>#{user.verify}</from-action>
          <from-outcome>success</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          </navigation-case>
          ....
          </navigation-rule>
          ....

           

          在導(dǎo)航時(shí),預(yù)設(shè)都是使用forward的方式,您可以在<navigation-case>中加入一個(gè)<redirect/>,讓JSF發(fā)出讓瀏覽器重新導(dǎo)向(redirect)的header,讓瀏覽器主動(dòng)要求新網(wǎng)頁(yè),例如:
           
          ....
          <navigation-rule>
          <from-view-id>/pages/index.jsp</from-view-id>
          <navigation-case>
          <from-outcome>success</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          <redirect/>
          </navigation-case>
          ....
          </navigation-rule>
          ....

           

          您的來(lái)源網(wǎng)頁(yè)可能是某個(gè)特定模組,例如在/admin/下的頁(yè)面,您可以在<from-view-id>中使用wildcards,也就是使用 * 字元,例如:
           
          ....
          <navigation-rule>
          <from-view-id>/admin/*</from-view-id>
          <navigation-case>
          <from-action>#{user.verify}</from-action>
          <from-outcome>success</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          </navigation-case>
          ....
          </navigation-rule>
          ....

           

          在上面的設(shè)定中,只要來(lái)源網(wǎng)頁(yè)是從/admin來(lái)的,都可以開(kāi)始測(cè)試接下來(lái)的<navigation-case>。

           

          <from-view-id>如果沒(méi)有設(shè)定,表示來(lái)源網(wǎng)頁(yè)不作限制,您也可以使用 * 顯式的在定義檔中表明,例如:
           
          ....
          <navigation-rule>
          <from-view-id>/*</from-view-id>
          <navigation-case>
          ....
          </navigation-rule>
          ....

           

          或者是這樣:
           
          ....
          <navigation-rule>
          <from-view-id>*</from-view-id>
          <navigation-case>
          ....
          </navigation-rule>
          ....




          周行 2008-05-22 12:36 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/ConfigNavigationRule.html
          posted @ 2008-05-22 12:36 jwebee 閱讀(145) | 評(píng)論 (0)編輯 收藏

          第一個(gè)JSF程式 中,我們簡(jiǎn)單的定義了頁(yè)面的流程由 index.jsp 到 welcome.jsp,接下來(lái)我們擴(kuò)充程式,讓它可以根據(jù)使用者輸入的名稱(chēng)與密碼是否正確,決定要顯示歡迎訊息或是將使用者送回原頁(yè)面進(jìn)行重新登入。

           

          首先我們修改一下UserBean:
          • UserBean.java
           
          package onlyfun.caterpillar;

          public class UserBean {
          private String name;
          private String password;
          private String errMessage;

          public void setName(String name) {
          this.name = name;
          }

          public String getName() {
          return name;
          }

          public void setPassword(String password) {
          this.password = password;
          }

          public String getPassword() {
          return password;
          }

          public void setErrMessage(String errMessage) {
          this.errMessage = errMessage;
          }

          public String getErrMessage() {
          return errMessage;
          }

          public String verify() {
          if(!name.equals("justin") ||
          !password.equals("123456")) {
          errMessage = "名稱(chēng)或密碼錯(cuò)誤";
          return "failure";
          }
          else {
          return "success";
          }
          }
          }

           

          在UserBean中,我們?cè)黾恿嗣艽a與錯(cuò)誤訊息屬性,在verify()方法中,我們檢查使用者名稱(chēng)與密碼,它傳回一個(gè)字串,"failure"表示登入錯(cuò)誤,並會(huì)設(shè)定錯(cuò)誤訊息,而"success"表示登入正確,這個(gè)傳回的字串將決定頁(yè)面的流程。

           

          接下來(lái)我們修改一下 faces-config.xml 中的頁(yè)面流程定義:
          • faces-config.xml
           
          <?xml version="1.0"?>
          <!DOCTYPE faces-config PUBLIC
          "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
          "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">

          <faces-config>
          <navigation-rule>
          <from-view-id>/pages/index.jsp</from-view-id>
          <navigation-case>
          <from-outcome>success</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          </navigation-case>
          <navigation-case>
          <from-outcome>failure</from-outcome>
          <to-view-id>/pages/index.jsp</to-view-id>
          </navigation-case>
          </navigation-rule>

          <managed-bean>
          <managed-bean-name>user</managed-bean-name>
          <managed-bean-class>
          onlyfun.caterpillar.UserBean
          </managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          </managed-bean>
          </faces-config>

           

          根據(jù)上面的定義,當(dāng)傳回的字串是"success"時(shí),將前往 welcome.jsp,如果是"failure"的話(huà),將送回 index.jsp。

           

          接下來(lái)告訴網(wǎng)頁(yè)設(shè)計(jì)人員Bean名稱(chēng)與相關(guān)屬性,以及決定頁(yè)面流程的verify名稱(chēng),我們修改 index.jsp 如下:
          • index.jsp
           
          <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
          <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
          <%@page contentType="text/html;charset=Big5"%>
          <html>
          <head>
          <title>第一個(gè)JSF程式</title>
          </head>
          <body>
          <f:view>
          <h:form>
          <h3>請(qǐng)輸入您的名稱(chēng)</h3>
          <h:outputText value="#{user.errMessage}"/><p>
          名稱(chēng): <h:inputText value="#{user.name}"/><p>
          密碼: <h:inputSecret value="#{user.password}"/><p>
          <h:commandButton value="送出"
          action="#{user.verify}"/>
          </h:form>
          </f:view>
          </body>
          </html>

           

          當(dāng)要根據(jù)verify運(yùn)行結(jié)果來(lái)決定頁(yè)面流程時(shí),action屬性中使用 JSF Expression Language "#{user.verify}",如此JSF就知道必須根據(jù)verify傳回的結(jié)果來(lái)導(dǎo)航頁(yè)面。

           

          <h:outputText>可以取出指定的Bean之屬性值,當(dāng)使用者因驗(yàn)證錯(cuò)誤而被送回原頁(yè)面時(shí),這個(gè)錯(cuò)誤訊息就可以顯示在頁(yè)面上。


          周行 2008-05-22 12:35 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/SimpleNavigation.html
          posted @ 2008-05-22 12:35 jwebee 閱讀(139) | 評(píng)論 (0)編輯 收藏

          現(xiàn)在可以開(kāi)發(fā)一個(gè)簡(jiǎn)單的程式了,我們將設(shè)計(jì)一個(gè)簡(jiǎn)單的登入程式,使用者送出名稱(chēng),之後由程式顯示使用者名稱(chēng)及歡迎訊息。

           

          程式開(kāi)發(fā)人員

          先看看應(yīng)用程式開(kāi)發(fā)人員要作些什麼事,我們撰寫(xiě)一個(gè)簡(jiǎn)單的JavaBean:
          • UserBean.java
           
          package onlyfun.caterpillar;

          public class UserBean {
          private String name;

          public void setName(String name) {
          this.name = name;
          }

          public String getName() {
          return name;
          }
          }

           

          這個(gè)Bean將儲(chǔ)存使用者的名稱(chēng),編譯好之後放置在/WEB-INF/classes下。

           

          接下來(lái)設(shè)計(jì)頁(yè)面流程,我們將先顯示一個(gè)登入網(wǎng)頁(yè)/pages/index.jsp,使用者填入名稱(chēng)並送出表單,之後在 /pages/welcome.jsp中顯示Bean中的使用者名稱(chēng)與歡迎訊息。

           

          為了讓JSF知道我們所設(shè)計(jì)的Bean以及頁(yè)面流程,我們定義一個(gè)/WEB-INF/faces-config.xml:
          • faces-config.xml
           
          <?xml version="1.0"?>
          <!DOCTYPE faces-config PUBLIC
          "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
          "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">

          <faces-config>
          <navigation-rule>
          <from-view-id>/pages/index.jsp</from-view-id>
          <navigation-case>
          <from-outcome>login</from-outcome>
          <to-view-id>/pages/welcome.jsp</to-view-id>
          </navigation-case>
          </navigation-rule>

          <managed-bean>
          <managed-bean-name>user</managed-bean-name>
          <managed-bean-class>
          onlyfun.caterpillar.UserBean
          </managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          </managed-bean>
          </faces-config>

           

          在<navigation-rule>中,我們定義了頁(yè)面流程,當(dāng)請(qǐng)求來(lái)自<from-view- id>中指定的頁(yè)面,並且指定了<navigation-case>中的<from-outcome>為login時(shí),則會(huì)將請(qǐng)求導(dǎo)向至<to-view-id>所指定的頁(yè)面。

           

          在<managed-bean>中我們可以統(tǒng)一管理我們的Bean,我們?cè)O(shè)定Bean物件的存活範(fàn)圍是session,也就是使用者開(kāi)啟瀏覽器與程式互動(dòng)過(guò)程中都存活。

           

          接下來(lái)要告訴網(wǎng)頁(yè)設(shè)計(jì)人員的資訊是,他們可以使用的Bean名稱(chēng),即<managed-bean-name>中設(shè)定的名稱(chēng),以及上面所定義的頁(yè)面流程。

           

          網(wǎng)頁(yè)設(shè)計(jì)人員

           

          首先網(wǎng)頁(yè)設(shè)計(jì)人員撰寫(xiě)index.jsp網(wǎng)頁(yè):
          • index.jsp
           
          <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
          <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
          <%@page contentType="text/html;charset=Big5"%>
          <html>
          <head>
          <title>第一個(gè)JSF程式</title>
          </head>
          <body>
          <f:view>
          <h:form>
          <h3>請(qǐng)輸入您的名稱(chēng)</h3>
          名稱(chēng): <h:inputText value="#{user.name}"/><p>
          <h:commandButton value="送出" action="login"/>
          </h:form>
          </f:view>
          </body>
          </html>

           

          我們使用了JSF的core與html標(biāo)籤庫(kù),core是有關(guān)於UI元件的處理,而html則是有關(guān)於HTML的進(jìn)階標(biāo)籤。

           

          <f:view>與<html>有類(lèi)似的作用,當(dāng)您要開(kāi)始使用JSF元件時(shí),這些元件一定要在<f: view>與</f:view>之間,就如同使用HTML時(shí),所有的標(biāo)籤一定要在<html>與< /html>之間。

           

          html標(biāo)籤庫(kù)中幾乎都是與HTML標(biāo)籤相關(guān)的進(jìn)階標(biāo)籤,<h:form>會(huì)產(chǎn)生一個(gè)表單,我們使用<h: inputText>來(lái)顯示user這個(gè)Bean物件的name屬性,而<h:commandButton>會(huì)產(chǎn)生一個(gè)提交按鈕,我們?cè)赼ction屬性中指定將根據(jù)之前定義的login頁(yè)面流程中前往welcome.jsp頁(yè)面。

           

          網(wǎng)頁(yè)設(shè)計(jì)人員不必理會(huì)表單傳送之後要作些什麼,他只要設(shè)計(jì)好歡迎頁(yè)面就好了:
          • welcome.jsp
           
          <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
          <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
          <%@page contentType="text/html;charset=Big5"%>
          <html>
          <head>
          <title>第一個(gè)JSF程式</title>
          </head>
          <body>
          <f:view>
          <h:outputText value="#{user.name}"/> 您好!
          <h3>歡迎使用 JavaServer Faces!</h3>
          </f:view>
          </body>
          </html>

           

          這個(gè)頁(yè)面沒(méi)什麼需要解釋的了,如您所看到的,在網(wǎng)頁(yè)上沒(méi)有程式邏輯,網(wǎng)頁(yè)設(shè)計(jì)人員所作的就是遵照頁(yè)面流程,使用相關(guān)名稱(chēng)取出資料,而不用擔(dān)心實(shí)際上程式是如何運(yùn)作的。

           

          接下來(lái)啟動(dòng)Container,連接上您的應(yīng)用程式網(wǎng)址,例如:http://localhost: 8080/jsfDemo/pages/index.faces,填入名稱(chēng)並送出表單,您的歡迎頁(yè)面就會(huì)顯示了。


          周行 2008-05-22 12:34 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/FirstJSF.html
          posted @ 2008-05-22 12:34 jwebee 閱讀(139) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          周行 2008-05-22 12:32 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/IntroduceJSF.html
          posted @ 2008-05-22 12:32 jwebee 閱讀(160) | 評(píng)論 (0)編輯 收藏

               摘要: JavaServer Faces [http://java.sun.com/j2ee/javaserverfaces/] 於2004年三月1.0版正式提出,清楚的將Web應(yīng)用程式的開(kāi)發(fā)者劃分了三個(gè)角色:網(wǎng)頁(yè)設(shè)計(jì)人員、應(yīng)用程式設(shè)計(jì)人員以及UI元件開(kāi)發(fā)人員。從使用的角度來(lái)看,網(wǎng)頁(yè)設(shè)計(jì)人員與應(yīng)用程式設(shè)計(jì)人員可以他們所熟悉的方式開(kāi)發(fā)程式,而不用侵入彼此的工作範(fàn)圍,而UI元件開(kāi)發(fā)人員可以獨(dú)立的開(kāi)發(fā)個(gè)別元件,細(xì)節(jié)的部份留給了他們來(lái)處理。  閱讀全文

          周行 2008-05-22 12:31 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/22/javaserverfaces.html
          posted @ 2008-05-22 12:31 jwebee 閱讀(101) | 評(píng)論 (0)編輯 收藏

               摘要: 軟件架構(gòu)師是軟件行業(yè)中一種新興職業(yè),工作職責(zé)是在一個(gè)軟件項(xiàng)目開(kāi)發(fā)過(guò)程中,將客戶(hù)的需求轉(zhuǎn)換為規(guī)范的開(kāi)發(fā)計(jì)劃及文本,并制定這個(gè)項(xiàng)目的總體架構(gòu),指導(dǎo)整個(gè)開(kāi)發(fā)團(tuán)隊(duì)完成這個(gè)計(jì)劃。架構(gòu)師的主要任務(wù)不是從事具體的軟件程序的編寫(xiě),而是從事更高層次的開(kāi)發(fā)構(gòu)架工作。他必須對(duì)開(kāi)發(fā)技術(shù)非常了解,并且需要有良好的組織管理能力。可以這樣說(shuō),一個(gè)架構(gòu)師工作的好壞決定了整個(gè)軟件開(kāi)發(fā)項(xiàng)目的成敗。
            閱讀全文

          周行 2008-05-20 12:42 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/20/201614.html
          posted @ 2008-05-20 12:42 jwebee 閱讀(96) | 評(píng)論 (0)編輯 收藏

               摘要: 軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊。在實(shí)現(xiàn)階段,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類(lèi)或者對(duì)象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口(計(jì)算機(jī)科學(xué))來(lái)實(shí)現(xiàn)。  閱讀全文

          周行 2008-05-12 17:01 發(fā)表評(píng)論

          文章來(lái)源:http://www.aygfsteel.com/zhouxing/archive/2008/05/12/software_architecture.html
          posted @ 2008-05-12 17:01 jwebee 閱讀(100) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共2頁(yè): 1 2 下一頁(yè) 
          主站蜘蛛池模板: 安塞县| 芦山县| 涪陵区| 秦皇岛市| 霍林郭勒市| 石家庄市| 遂溪县| 乐都县| 河北省| 灵璧县| 利津县| 南宁市| 遂溪县| 甘洛县| 宾阳县| 绩溪县| 繁峙县| 凤山市| 玉林市| 界首市| 阳新县| 扎兰屯市| 韩城市| 成武县| 二手房| 桑植县| 神池县| 冷水江市| 西乌珠穆沁旗| 青州市| 固原市| 永安市| 汉阴县| 福建省| 仪陇县| 措勤县| 喀喇| 黔东| 科技| 浑源县| 山西省|