JSF入門 一 介紹 安裝

來源:互聯網
上載者:User

1. 什麼是JSF

    a. jsf是一個基於web的GUI組件和相關處理器的集合

         jsf提供了許多內建的包含組件事件處理代碼的html組件

    b. jsf是一個獨立的GUI組件架構

        jsf可以組建圖表等,比起html來說功能更強大,而且JSF不是僅僅依賴於HTTP協議。

    c. 可以作為比struts更優秀的mvc架構

        象Apache的Struts,jsf也可以被看作一個MVC架構,它可以構建html表單,驗證表單域,調用商務邏輯,顯示結果等。

2. JSF的優點

    a. 自訂GUI組件

     b. 事件處理機制

    c. 受管Bean

    d. jsf運算式語言

    e. 表單域的資料類型轉換與驗證

    f. 集中控制的基於檔案的配置

3. JSF的缺點

    a. 較長的學習曲線

    b. 很少的文檔資料

    c. 較少的開發工具

4. 安裝和配置JSF

    a. 下載 the JSF 1.1 zip file

        http://java.sun.com/j2ee/javaserverfaces/download.html

        http://www.myfaces.org/

    b. 構建應用程式目錄

    /WEB-INF/

        --web.xml

        --faces-config.xml

        --classes/

        --lib/

                ---commons-beanutils.jar

                ---commons-collections.jar

                ---commons-digester.jar

                ---commons-logging.jar

                ---jsf-api.jar

                ---jsf-impl.jar

                ---jstl.jar

                ---standard.jar

JSF入門 二 頁面導航

1. JSF的控制流程程

    a. 由各種GUI組件構建的web表單顯示給使用者

    b. 這個表單被提交給自己

    c. 建立一個描繪表單資料的bean

    d. 在form中描述的action方法被調用

    e. action方法返回一個條件

    f. 相應於這個條件的頁面返回給使用者

2. 使用JSF開發的步驟

    a. 建立一個描繪表單資料的Bean

    b. 使用f:view和h:form來建立輸入表單

    c. 用h:commandButton的 action屬性來詳細說明一個Action controller

    d. 建立一個Action controller來讀取資料,調用商務邏輯,儲存結果,返回一個和某結果頁面相關的條件。

    e. 使用faces-config.xml來聲明form bean和頁面導航。

    f. 建立和每一條件相關聯的jsp頁面。

3. 案例1:靜態導航

    a. 輸入表單

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<!DOCTYPE …>
<HTML>
<HEAD>…</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">New Account Registration</TH></TR>
</TABLE>
<P>
<h:form>
Email address: <h:inputText/><BR>
Password: <h:inputSecret/><BR>
<h:commandButton value="Sign Me Up!" action="login"/>
</h:form>
</CENTER></BODY></HTML>
</f:view>

b. 頁面導航

<faces-config>
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/WEB-INF/…/result.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>

c. 說明

   由於是靜態導航,所以h:commandButton中的action屬性沒有指明控制器中的方法,而是直間賦予了導航條件(from-outcome),因此當點擊按鈕後會直接轉向result.jsp頁面.(當然一般情況下應在action屬性中指明控制器處理方法)

4. 案例2:動態導航

a. 輸入表單

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>

<h:form>
First name: <h:inputText/><BR>
Last name: <h:inputText/><BR>
...
<h:commandButton
value="Sign Me Up!"
action="#{loginAction.validate}"/>
</h:form>…
</f:view>

b. 控制器

public class LoginAction {
         public String validate() {
                 if (...) {
                        return "error";
                  }
                  else {
                        return "success";
                 }
          }
}

c. 導航

<faces-config>

<navigation-rule>

<managed-bean>
<managed-bean-name>
loginAction
</managed-bean-name>
<managed-bean-class>
net.boyce.LoginAction
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<from-view-id>/signup.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/WEB-INF/results/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/WEB-INF/results/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>

</faces-config>

d. 說明

在action屬性中指明了控制器,由控制器返回條件,再根據導航轉到不同的結果頁面。注意在action屬性中指明的控制器方法是無輸入參數,且返回String類的函數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.