1. 程式人生 > >hello1實例的分析

hello1實例的分析

劃分 接收 應用 att port XML 清晰 註釋 規範

JSF簡介
一、 什麽是 JSF:
JavaServer Faces (JSF) 是一種用於構建 Web 應用程序的新標準 Java 框架。它提供了一種以組件為中心來開發 Java Web 用戶界面的方法,從而簡化了開發。
JavaServer Faces於2004年三月1.0版正式提出,清楚的將Web應用程序的開發者劃分了三個角色:網頁設計人員、應用程序設計人員以及UI組件開發人員。 從使用的角度來看,網頁設計人員與應用程序設計人員可以他們所熟悉的方式開發程序,而不用侵入彼此的工作範圍,而UI組件開發人員可以獨立的開發個別組件,細節的部份留給了他們來處理。
JSF 還通過將良好構建的模型-視圖-控制器 (MVC) 設計模式集成到它的體系結構中,確保了應用程序具有更高的可維護性。

由於 JSF 是通過 Java Community Process (JCP) 開發的一種 Java 標準,因此開發工具供應商完全能夠為 JavaServer Faces 提供易於使用的、高效的可視化開發環境。

二、 JSF 體系結構:
JSF 的主要優勢之一就是它既是 Java Web 應用程序的用戶界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。用戶界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使 JSF 應用程序更易於管理。為了準備提供頁面對應用程序數據訪問的 JSF 上下文和防止對頁面未授權或不正確的訪問,所有與應用程序的用戶交互均由一個前端FacesServlet(控制器)來處理。

三、 JSF 生命周期:
FacesServlet 充當用戶和 JSF 應用程序之間的紐帶。它在明確限定的 JSF 生命周期(規定了用戶請求之間的整個事件流)的範圍內工作。
1. 當JSF頁面上的一個事件發生時(比如:用戶單擊了一個按鈕),事件通知通過HTTP發往服務器。服務器端使用FacesServet這個特殊的Servlet處理該通知。
2. FacesServlet一接收到用戶的請求就創建一個FacesContext對象(JSF上下文,它存放了應用程序的所有數據)。在處理過程中,主要修改的就是這個FaceContext對象。
3. 接著就是處理過程,處理器是一個叫作Lifecycle的對象。FacesServet把控制權轉交給Lifecycle對象。該對象分6個階段來處理FacesContext對象以生成響應,最後將響應發回客戶端。
Lifecycle對象處理JSP請求所需要的一系列動作稱為請求處理生命周期。過程狀態圖如下:

由於請求處理生命周期裏的應用請求值、處理驗證、更新模型值和調用應用程序等階段都可以在當前的請求對應的FacesContext實例中添加事件,因此,JSF實現必須在這些階段後處理這些事件。

技術分享圖片
/**
 * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
 *
 * You may not modify, use, reproduce, or distribute this software except in
 * compliance with  the terms of the License at:
 * https://github.com/javaee/tutorial-examples/LICENSE.txt
 */
package javaeetutorial.hello1; //這是一個javaee教程的一個實例hello1包


import javax.enterprise.context.RequestScoped;//導入註釋類型RequestScoped包
import javax.inject.Named;//導入依賴註入Named包

@Named
@RequestScoped
public class Hello {

    private String name; //私有變量name

    public Hello() {
    }

    public String getName() {
        return name;
    }//獲取變量name的值

    public void setName(String user_name) {
        this.name = user_name; //給name賦值
    }
}
技術分享圖片 技術分享圖片
<?xml version="1.0" encoding="UTF-8"?> <!--xml的版本信息和編碼方式-->
<web-app version="3.1" <!--webapp的版本信息-->
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" <!--使用符合XML規範的XHTML文檔-->
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!--使用xsi作為前綴的Namespace-->
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!--定義了XML Namespace和對應的XSD(Xml Schema Definition)文檔的位置的關系。-->
    <context-param> <!--上下文參數-->
        <param-name>javax.faces.PROJECT_STAGE</param-name><!--參數名-->
        <param-value>Development</param-value><!--參數值-->
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name> <!--servlet名-->
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class><!--servlet所從屬的類-->
        <load-on-startup>1</load-on-startup> <!--加載的第一步-->
    </servlet>
    <servlet-mapping> <!--servl映射-->
        <servlet-name>Faces Servlet</servlet-name><!--映射名-->
        <url-pattern>*.xhtml</url-pattern><!--映射路徑-->
    </servlet-mapping>
    <session-config><!--會話配置信息-->
        <session-timeout><!--會話刷新時間30ms-->
            30
        </session-timeout>
    </session-config>
    <welcome-file-list><!--首頁文件列表-->
        <welcome-file>index.xhtml</welcome-file><!--首頁展示的文件名-->
    </welcome-file-list>
</web-app>
技術分享圖片

hello1實例的分析