hello1源码解析
1:選擇hello1文件夾并單擊“打開項目”。展開“Web頁”節點,然后雙擊該index.xhtml文件以在編輯器中查看它。
該index.xhtml文件是Facelets應用程序的默認登錄頁面。在典型的Facelets應用程序中,網頁是在XHTML中創建的。對于此應用程序,頁面使用簡單的標記來顯示帶有圖形圖像,標題,字段和兩個命令按鈕的表單
?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN??? "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> //此標簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML規范;DTD一整套文本類型的定義;標準原文的鏈接
?
<html lang="en"
????? xmlns="http://www.w3.org/1999/xhtml"
????? xmlns:h="http://xmlns.jcp.org/jsf/html"> //語言使用英文;xml采用名字空間聲明,允許你通過一個網址來識別你的標記;jcp是java社區的執行委員會
??? <h:head>
??????? <title>Facelets Hello Greeting</title>
??? </h:head>
??? <h:body>
??????? <h:form>
??????????? <h:graphicImage url="#{resource['images:duke.waving.gif']}"
??????????????????????????? alt="Duke waving his hand"/>????????? //做為資源形式出現的;alt加載不出來就進行替換
??????????? <h2>Hello, my name is Duke. What's yours?</h2>
??????????? <h:inputText id="username"
???????????????????????? title="My name is: "
?????????????? ??????????value="#{hello.name}"
???????????????????????? required="true"
???????????????????????? requiredMessage="Error: A name is required."
???????????????????????? maxlength="25" />?????? //Web頁面Hello通過Expression Language(EL)值表達式連接到托管bean,
??????????? ????????????????????????????????????//該表達式從托管bean中#{hello.name}檢索name屬性的值。請注意使用 hello引用托管bean Hello。如果@Named在托管bean 的注釋中未指定名稱,
?????????????????????????????????????????????? //則始終使用小寫的類名的第一個字母訪問托管bean
?????????????????????????????????????????????? //required屬性指定必須填寫該字段; requiredMessage如果字段為空,則該 屬性提供要顯示的錯誤消息
??????????? <p></p>
??????????? <h:commandButton id="submit" value="Submit" action="response">
??????????? </h:commandButton>
??????????? <h:commandButton id="reset" value="Reset" type="reset">
??????????? </h:commandButton>?????????????????? //Submit commandButton元素將操作指定為response,表示單擊按鈕時,將response.xhtml顯示該頁面。
??????? </h:form>
??????? ...
??? </h:body>
</html>
2:雙擊該response.xhtml文件以查看它。
出現響應頁面。甚至比問候頁面簡單,響應頁面包含一個圖形圖像,一個顯示托管bean提供的表達式的標題,以及一個按鈕,其 action元素將您傳回index.xhtml頁面:
?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
??? "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en"
????? xmlns="http://www.w3.org/1999/xhtml"
????? xmlns:h="http://xmlns.jcp.org/jsf/html">
??? <h:head>
??????? <title>Facelets Hello Response</title>
??? </h:head>
??? <h:body>
??????? <h:form>
??????????? <h:graphicImage url="#{resource['images:duke.waving.gif']}"
??????????????????????????? alt="Duke waving his hand"/>
??????????? <h2>Hello, #{hello.name}!</h2>
??????????? <p></p>
??????????? <h:commandButton id="back" value="Back" action="index" />
??????? </h:form>
??? </h:body>
</html>
3.展開“源包”節點,然后展開javaeetutorial.hello1 節點。雙擊該Hello.java文件以查看它。在Hello類,稱為管理bean類,提供了getter和setter方法name中的Facelets頁面表達式中使用屬性。默認情況下,表達式語言引用類名,第一個字母為小寫(hello.name)。
?
package javaeetutorial.hello1;
?
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;?? //使用請求范圍將類標識為托管bean,范圍定義應用程序數據如何保持和共享
?
@Named
@RequestScoped???????????? //@表示注解
public class Hello {
?
??? private String name;
?
??? public Hello() {
??? }
?
??? public String getName() {
??????? return name;
??? }
?
??? public void setName(String user_name) {
??????? this.name = user_name;
??? }
}
//JavaServer Faces應用程序中最常用的范圍如下:
//Request(@RequestScoped):請求范圍在Web應用程序中的單個HTTP請求期間保持不變。在類似的應用程序hello1中,應用程序由單個請求和響應組成,bean使用請求范圍
//Session(@SessionScoped):會話范圍在Web應用程序中的多個HTTP請求中保持不變。當應用程序由需要維護數據的多個請求和響應組成時,bean使用會話范圍
//Application(@ApplicationScoped):應用程序范圍在所有用戶與Web應用程序的交互中持續存在
4:在“Web頁”節點下,展開WEB-INF節點,然后雙擊該web.xml文件以進行查看。該web.xml文件包含Facelets應用程序所需的幾個元素。使用NetBeans IDE創建應用程序時,將自動創建以下所有內容。
指定項目階段的上下文參數:
?
??? <context-param>
??????? <param-name>javax.faces.PROJECT_STAGE</param-name>
??????? <param-value>Development</param-value>
??? </context-param>
上下文參數提供Web應用程序所需的配置信息。應用程序可以定義自己的上下文參數。此外,JavaServer Faces技術和Java Servlet技術定義了應用程序可以使用的上下文參數。
?
一個servlet元素及其servlet-mapping元素指定 FacesServlet。所有帶.xhtml后綴的文件都將匹配:
?
??? <servlet>
??????? <servlet-name>Faces Servlet</servlet-name>
??????? <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
??????? <load-on-startup>1</load-on-startup>
??? </servlet>
??? <servlet-mapping>
??????? <servlet-name>Faces Servlet</servlet-name>
??????? <url-pattern>*.xhtml</url-pattern>
??? </servlet-mapping>
一個welcome-file-list元素指定著陸頁的位置:
?
??? <welcome-file-list>
??????? <welcome-file>index.xhtml</welcome-file>
??? </welcome-file-list>
轉載于:https://www.cnblogs.com/April315/p/10521219.html
總結
以上是生活随笔為你收集整理的hello1源码解析的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 构建之法 阅读笔记01
 - 下一篇: C# ZipHelper C#公共类 -