javascript
web.xml.jsf_面向初学者的JSF 2.0教程
web.xml.jsf
1.什么是JSF?
JSF是Java Server Faces的首字母縮寫。 它是一種服務器端處理技術,它允許將服務器端代碼嵌入到網頁中。 由于可以將服務器端處理和渲染代碼嵌入網頁本身,因此使項目的整體編碼更加簡單。 減少文件總數和大小。 JSF包含2個主要組件:
這些組件共同構成了MVC的視圖和控制器。
2. JSF 2.0 –有何不同?
JSF 2.0和更高版本是其較早版本JSF 1.x的主要升級。 隨著JSF 2.0版本的發布,基于JSF的項目的編碼風格發生了變化。 使用JSF 2.0,不需要在單獨的配置文件(如舊版本)中聲明不同的項目。 JSF 2.0允許在faces-config.xml文件中聲明幾乎所有內容。 而且,JSF 2.0添加了使用注釋定義導航,托管或CDI Bean的功能。 當然,這可以減少設置項目結構所需的配置量。
以下各節將使用一個簡單的Hello World示例提供有關JSF代碼如何工作的基本理解,并在以后轉向JSF 2.0功能和標簽。
3.設置基于JSF 2.0的動態Web項目
3.1先決條件
以下示例是使用以下工具集創建的:
- Maven的v4.0
- Eclipse Java EE IDE
- Apache Tomcat 9.0
- JDK v7或更高版本
- JSF 2.0
為了設置用于執行JSF 2.0相關任務的項目,請按照以下所示的步驟從創建Maven WebApp項目開始。
具有默認工作區的新Maven項目
這些步驟將創建一個帶有默認index.jsp文件的簡單Web項目。 創建項目后,將Apache Tomcat服務器綁定到該項目。 完成此配置后,通過右鍵單擊文件index.jsp并導航至Run as- > Run on Server來測試項目的運行 。 選擇Apache Tomcat服務器,然后單擊完成。
如果一切都配置正確,則將顯示類似于以下所示的網頁。
索引頁
下一步是將JSF 2.0的Maven依賴項添加到項目中。 在pom.xml中添加以下依賴項以啟用對JSF 2.0功能的支持。
pom.xml
<dependency><groupId>com.sun.faces</groupId><artifactId>jsf-api</artifactId><version>2.1.7</version></dependency><dependency><groupId>com.sun.faces</groupId><artifactId>jsf-impl</artifactId><version>2.1.7</version></dependency><!-- Required for JSTL tags to be used in JSF --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>一旦將依賴項添加到pom.xml中,請保存項目并留出一些時間來下載依賴項。
4.從托管豆開始
JSF 2.0的主要優點之一是,它允許使用注釋來定義托管bean。 在本節中,我們將介紹如何創建和使用簡單的托管Bean,以及稍后使用JSTL標簽進行稍微復雜的操作。
4.1使用基本EL創建一個簡單的xHTML頁面
EL是表達語言的縮寫。 使用JSF 2.0,可以直接訪問Bean中可用的變量或使用EL編寫簡單的表達式。 下面的頁面包含一個簡單的EL #{'Coding'} ,它產生一個簡單的字符串值Coding 。
SayHello.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"><head><title>JSF 2.0 Say Hello</title> </head><body><p>Hey There! My hobby is #{'Coding'}</p></body> </html>在WEB-INF文件夾中創建上述文件之前,需要完成某些配置。
現在,該項目可以運行了。 項目結構應如下圖所示:
Maven Web App項目結構
現在,只需右鍵單擊文件SayHello.xhtml并導航至“運行方式->在服務器上運行”,選擇Apache Tomcat服務器,然后單擊“完成”以運行第一個xHTML頁面。
請注意,這里有2個不同的JSF標簽庫導入到頁面中以支持JSF標簽。 這些標記使您能夠在HTML頁面中編寫邏輯代碼塊,并允許使用預樣式化的JSF標記替換標準HTML標記。 執行頁面時,頁面顯示以下輸出。
SayHello.xhtml的輸出
4.2創建第一個托管Bean
下一步,讓我們將用戶的愛好作為托管Bean中的變量,并嘗試使用托管Bean進行填充。 使用下面的代碼創建一個托管bean。
HobbiesBean.java
package jsftutorial;import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped;@ManagedBean @SessionScoped public class HobbiesBean {private String hobby = "Java Coding";public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}}請注意,這里使用了兩個注釋。
讓我們嘗試在之前創建的xhtml頁面上顯示變量hobby的值。 為此,請修改SayHello.xhtml文件,如下所示:
SayHello.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"><head><title>JSF 2.0 Say Hello</title> </head><body><p>Hey There! My hobby is #{hobbiesBean.hobby}</p></body> </html>實施上述代碼后,請重新啟動服務器并檢查頁面。 除愛好文本外,輸出保持類似。 輸出現在是Hey There! 我的愛好是Java編碼 。 這里有兩點很重要。
4.3使用自定義別名命名bean
上面的示例根據JSF標準使用bean的默認名稱。 但是,有時開發人員可能希望使用自定義bean名稱來更好地理解。 例如,對于Employee類,開發人員可能更喜歡bean名稱為user 。 對于此類情況,注釋@ManagedBean具有屬性名稱
此屬性允許開發人員使用以下語法來提供自定義名稱。 放置注釋的代碼行中的以下修改將把HobbiesBean重命名為myHobbies 。
@ManagedBean(name="myHobbies")在Bean文件中完成此更改后,如下所示修改SayHello.xhtml文件。
SayHello.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"><head><title>JSF 2.0 Say Hello</title> </head><body><p>Hey There! My hobby is #{myHobbies.hobby}</p></body> </html>盡管Bean的名稱發生了變化,但執行此代碼后的輸出仍保持不變。
4.4在托管Bean中注入Bean依賴項
依賴注入是在面向對象的環境中進行管理的重要方面。 讓我們考慮下面的User類:
User.java
package jsftutorial;import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped;@ManagedBean @SessionScoped public class User {private HobbiesBean hobby;private String name="Java Coder";public HobbiesBean getHobby() {return hobby;}public void setHobby(HobbiesBean hobby) {this.hobby = hobby;}public String getName() {return name;}public void setName(String name) {this.name = name;} }在這里,我們需要將HobbiesBean類的對象注入到User類中。 為了將其作為托管bean依賴項注入,JSF 2.0支持注釋@ManagedProperty(value="#{myHobbies}") 。 值屬性應根據相應類的bean名稱進行分配。 提取用戶對象時,此批注將自動注入依賴的bean。 可以通過如下創建一個新文件來驗證。
injectiontest.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"><head><title>JSF 2.0 Say Hello</title> </head><body><p>Hey There! I am #{user.name}. My hobby is #{user.hobby.hobby}</p></body> </html>現在,輸出顯示Hey There! I am Java Coder. My hobby is Coding Hey There! I am Java Coder. My hobby is Coding Hey There! I am Java Coder. My hobby is Coding 。 以這種方式,可以很容易地注入任何數量的bean,而不必初始化bean。
4.5 JSF 2.0標簽
JSF 2.0標準定義了許多標簽,用于以簡單的方式執行高級操作。 在上面創建的xhtml文件中可以注意到,已經導入了兩個XML名稱空間。
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"前綴為h的名稱空間可替換常規html標簽。 下面提供了與它們的實際HTML標簽相關的最常用標簽的列表。
| HTML標簽 | JSF h標簽 |
| <label> | <h:outputText> |
| <input type="text"> | <h:inputText> |
| <input type="hidden"> | <h:inputHidden> |
| <input type="password"> | <h:inputSecret> |
| <input type="checkbox"> | <h:selectBooleanCheckbox> |
| <input type="radio"> | <h:selectOneRadio> |
| <textarea> | <h:inputTextArea> |
| <select> | <h:selectOneListbox> |
| <select multiple> | <h:selectManyListbox> |
| <img> | <h:graphicImage> |
除了這些之外,還可以在此處找到其他眾多h標簽的詳細信息。
前綴f的命名空間在這里很重要。 這些標簽提供了某些特殊功能,例如驗證組件,聲明上述h標簽的項目以及遍歷列表,數組或映射之類的對象并創建數據表。 下面將討論一些基本的f標簽及其實現。
actionlistener.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"> <body> <h:form> <h:commandButton action="result" value="Submit"><f:setPropertyActionListener target="#{user.name}" value="Java Code Geeks" /> </h:commandButton> </h:form> </body> </html>使用標簽f:setPropertyActionListener ,可以在提交表單時設置特定屬性的值。 上面的代碼設置了單擊命令按鈕時user Bean的屬性name的值。 該值將在操作頁面result.xhtml上可用 。 輸出如下所示。
f:setPropertyActionListener的輸出
考慮如下所示的類Bill 。
比爾
package jsftutorial;import java.util.Date;import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped;@ManagedBean @SessionScoped public class Bill {private double amount = 34.8; private Date billDate = new Date();public double getAmount() {return amount;}public void setAmount(double amount) {this.amount = amount;}public Date getBillDate() {return billDate;}public void setBillDate(Date billDate) {this.billDate = billDate;} }討論的下一個標簽允許控制十進制輸入中的小數位數。 創建xhtml文件,如下所示。
convert.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"> <body> <h:outputText value="#{bill.amount}" ><f:convertNumber minFractionDigits="2" /> </h:outputText></body> </html> 這是一個非常有用的標記,當您希望將數字截斷到特定的小數位或將數字強制具有一定的小數位數時,此標記非常有用。 這個標簽的使用非常簡單。
minFractionDigits要求最小的十進制精度數。 例如,如果輸入的輸入是34.8 (與Bill類相同),則標記將自動將值轉換為34.80 ,如下圖所示。
將數字轉換為至少2個小數
同樣,也可以以模式形式指定小數。 例如:
convert.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"> <body> <h:outputText value="#{bill.amount}" ><f:convertNumber pattern="#00.00" /> </h:outputText></body> </html>此模式將允許最多2位數字和2位小數。 這樣就無需在鍵盤輸入或焦點對準時添加自定義腳本。 輸出仍然類似于上面顯示的輸出。
convert.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://java.sun.com/jsf/core"xmlns:h="http://java.sun.com/jsf/html"> <body> <h:outputText value="#{bill.amount}" ><f:convertNumber pattern="#00.00" /> </h:outputText><br> <h:outputText value="#{bill.billDate}" ><f:convertDateTime pattern="d-M-yyyy"/> </h:outputText></body> </html>當我們需要以特定格式顯示日期和時間時,此屬性會派上用場。 標簽可以動態接受模式,并以給定模式顯示提供的java.util.Date變量。 bill.billDate是此處的java.util.Date 。 f標記將日期轉換為java.text.SimpleDateFormat類指定的dM-yyyy格式。 輸出將如下所示。
將f:convertDateTime轉換為dM-yyyy格式
有關更多標簽,您可以在此處進行探索。
5.結論
本文概括了JSF 2.0大部分必要功能的要點。 它從設置過程開始,繼續進行為托管bean使用注釋的主要功能。 所有主要功能(例如注釋, h標簽和f標簽)均已包含必要的詳細信息。 總是有更多參考。 其他有用的鏈接可以在下面的參考資料中找到。
6.參考
- 有關f標簽的更多信息
- 關于h標簽的更多信息
- c標簽用于條件分支和循環
7.下載Eclipse項目
這是討論使用JSF 2.0的示例。
下載您可以在此處下載此示例的完整源代碼: jsftutorial-1.zip
翻譯自: https://www.javacodegeeks.com/2018/03/jsf-2-0-tutorial-for-beginners.html
web.xml.jsf
總結
以上是生活随笔為你收集整理的web.xml.jsf_面向初学者的JSF 2.0教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上网安全设置(手机安全上网设置)
- 下一篇: mw310r无线路由器怎么设置(mw31