JSF serial

項目需要開始用到jsf,找到一個網站coreservlets,裏面有很全的學習資料,跟着那個學學。

主要內容:學了jsf編程的基礎,寫了一個jsf的小程序。

jsf是java server face的簡稱,主要用來是設計UI的,就像一個框架一樣使用。來看幾個coreservlets裏面提供的小程序來會用最基礎的jsf。

步驟不分先後:

step1:導包 jsf已經集成在java ee6裏了,如果不是javaee 6或者是在加ManagedBean時候有問題可以用一下。  jsf-api.jar  jsf-impl.jar  jstl-api-1.2jar jstl-imp-1.2.jar

step2:配置web.xml   jsf跳轉所有的處理的servlet  後綴都是.jsf,方式都是forward,所以頁面的url會是上一個地址

  1. <servlet> 
  2.     <servlet-name>Faces Servlet</servlet-name> 
  3.     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
  4. </servlet> 
  5. <servlet-mapping> 
  6.     <servlet-name>Faces Servlet</servlet-name> 
  7.     <url-pattern>*.jsf</url-pattern> 
  8. </servlet-mapping> 

step3:寫頁面了 頁面是以.xhtml爲後綴名的,以collection-name頁面分析寫jsf要注意的地方,大體頁面先出來,jsf相關的只能在managedBean寫好後寫

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  3. <html xmlns="http://www.w3.org/1999/xhtml" 
  4.       xmlns:h="http://java.sun.com/jsf/html"> 
  5. <h:head><title>Enter Name</title> 
  6. <link href="./css/styles.css"   
  7.       rel="stylesheet" type="text/css"/>   
  8. </h:head>
  9. //注意head,body,form,inputText,commandButton這些都有前綴h
  10. <h:body> 
  11. <div align="center"> 
  12. <table class="title"> 
  13.   <tr><th>Enter Name</th></tr> 
  14. </table> 
  15. <p/> 
  16. <fieldset> 
  17. <legend>Navigation with Input Values</legend> 
  18. <h:form> 
  19.   First name:   
  20. //這個nameController(managedBean的類名,首字母要小寫).firstName(這個是類中firstName屬性名)
  21.   <h:inputText value="#{nameController.firstName}"/><br/> 
  22.   Last name:   
  23.   <h:inputText value="#{nameController.lastName}"/><br/> 
  24.   <h:commandButton value="Register This Name" 
  25. //action的值是頁面的名字 
  26.                    action="#{nameController.showName}"/> 
  27. </h:form> 
  28. </fieldset> 
  29. </div></h:body></html> 

step4:現在要寫managedBean了,這裏看看NameController

 

  1. package coreservlets;  
  2.  
  3. import javax.faces.bean.*;  
  4.  
    //這裏就註釋表明這是個managedbean
  1. @ManagedBean 
  2. public class NameController {  
  3.   private String firstName="", lastName="";  
  4.     
  5.   //屬性必須有get,set方法,不然jsf認不到(曾經錯過)  
  6.   public String getFirstName() {  
  7.     return(firstName);  
  8.   }  
  9.  
  10.   public void setFirstName(String firstName) {  
  11.     this.firstName = firstName;  
  12.   }  
  13.  
  14.   public String getLastName() {  
  15.     return(lastName);  
  16.   }  
  17.  
  18.   public void setLastName(String lastName) {  
  19.     this.lastName = lastName;  
  20.   }  
  21.  
  22.  
  23.   public String showName() {  
  24.     if (isMissing(firstName) || isMissing(lastName)) {  
  25.       return("missing-name");  
  26.     } else {  
  27.       return("show-name");  
  28.     }  
  29.   }  
  30.     
  31.   private boolean isMissing(String name) {  
  32.     return(name.trim().length() == 0);  
  33.   }  
  34. }  

step5:還有一點,我不知道爲什麼,web.xml裏面沒有直接配a.xhtml,而是用了一個index.jsp來配置,index.jsp只有這句<% response.sendRedirect("collection-name.jsf"); %>

這樣應該就能運行了

我看了jsf basic programming這章,前面的沒看,我想知道jsf與jsp相比的優缺點,實現原理,其實有圖,我懶得看,先會了再說,慢慢漲信心。代碼可以去coreservlets.com裏面下載。我也懶得傳了,早點休息-_-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章