項目需要開始用到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會是上一個地址
- <servlet>
- <servlet-name>Faces Servlet</servlet-name>
- <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>*.jsf</url-pattern>
- </servlet-mapping>
step3:寫頁面了 頁面是以.xhtml爲後綴名的,以collection-name頁面分析寫jsf要注意的地方,大體頁面先出來,jsf相關的只能在managedBean寫好後寫
- <!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:h="http://java.sun.com/jsf/html">
- <h:head><title>Enter Name</title>
- <link href="./css/styles.css"
- rel="stylesheet" type="text/css"/>
- </h:head>
- //注意head,body,form,inputText,commandButton這些都有前綴h
- <h:body>
- <div align="center">
- <table class="title">
- <tr><th>Enter Name</th></tr>
- </table>
- <p/>
- <fieldset>
- <legend>Navigation with Input Values</legend>
- <h:form>
- First name:
- //這個nameController(managedBean的類名,首字母要小寫).firstName(這個是類中firstName屬性名)
- <h:inputText value="#{nameController.firstName}"/><br/>
- Last name:
- <h:inputText value="#{nameController.lastName}"/><br/>
- <h:commandButton value="Register This Name"
- //action的值是頁面的名字
- action="#{nameController.showName}"/>
- </h:form>
- </fieldset>
- </div></h:body></html>
step4:現在要寫managedBean了,這裏看看NameController
- package coreservlets;
- import javax.faces.bean.*;
//這裏就註釋表明這是個managedbean
- @ManagedBean
- public class NameController {
- private String firstName="", lastName="";
- //屬性必須有get,set方法,不然jsf認不到(曾經錯過)
- public String getFirstName() {
- return(firstName);
- }
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
- public String getLastName() {
- return(lastName);
- }
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
- public String showName() {
- if (isMissing(firstName) || isMissing(lastName)) {
- return("missing-name");
- } else {
- return("show-name");
- }
- }
- private boolean isMissing(String name) {
- return(name.trim().length() == 0);
- }
- }
step5:還有一點,我不知道爲什麼,web.xml裏面沒有直接配a.xhtml,而是用了一個index.jsp來配置,index.jsp只有這句<% response.sendRedirect("collection-name.jsf"); %>
這樣應該就能運行了
我看了jsf basic programming這章,前面的沒看,我想知道jsf與jsp相比的優缺點,實現原理,其實有圖,我懶得看,先會了再說,慢慢漲信心。代碼可以去coreservlets.com裏面下載。我也懶得傳了,早點休息-_-