hello1實例的分析
阿新 • • 發佈:2019-03-25
劃分 接收 應用 att port XML 清晰 註釋 規範 由於 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請求所需要的一系列動作稱為請求處理生命周期。過程狀態圖如下:
JSF簡介
一、 什麽是 JSF:
JavaServer Faces (JSF) 是一種用於構建 Web 應用程序的新標準 Java 框架。它提供了一種以組件為中心來開發 Java Web 用戶界面的方法,從而簡化了開發。
JavaServer Faces於2004年三月1.0版正式提出,清楚的將Web應用程序的開發者劃分了三個角色:網頁設計人員、應用程序設計人員以及UI組件開發人員。 從使用的角度來看,網頁設計人員與應用程序設計人員可以他們所熟悉的方式開發程序,而不用侵入彼此的工作範圍,而UI組件開發人員可以獨立的開發個別組件,細節的部份留給了他們來處理。
JSF 還通過將良好構建的模型-視圖-控制器 (MVC) 設計模式集成到它的體系結構中,確保了應用程序具有更高的可維護性。
二、 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對象以生成響應,最後將響應發回客戶端。
由於請求處理生命周期裏的應用請求值、處理驗證、更新模型值和調用應用程序等階段都可以在當前的請求對應的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實例的分析