JSF是基於MVC的網絡開發技術,是一種基於事件驅動的開發框架。在開發網絡應用的過程中,我們需要將網絡應用分為一些類,它們代表了事務數據和邏輯(the Model,包括乘客、飛機場、飛機、座位等等),用戶界面接口(the VIEw,包括飛機起飛輸入字段區域、機場飛機列表等等),以及將邏輯和用戶界面綁定在一起的代碼(the Controller)。
下面介紹一個最簡單的基於JSF應用的開發,從中可以了解到JSF開發的基本過程。這個應用中包含一個表單,用戶可以在這個表單裡輸入email地址,並且可以從一個列表目錄中選擇自己感興趣的時事通訊(我不知道怎麼貼圖,剛才試了一下不行,等我知道了再把圖貼上來),最後還有一個確定按鈕。當用戶確認自己在表單中輸入的信息時,email地址和選擇的時事通訊項將被保存到數據庫中,該應用的其它部分將使用這些信息來發送時事通訊到用戶的信箱,在這裡我們並不考慮這些。
網絡應用的開發主要是後台程序的開發,換句話說,就是控制事務邏輯和數據的類。對於時事通訊預訂表單這個應用而言,我們需要一個Subscriber類來保存subscriber信息。
package com.mycompany.newsservice.models; public class Subscriber { private String emailAddr; private String[] subscriptionIds; public String getEmailAddr( ) { return emailAddr; } public void setEmailAddr(String emailAddr) { this.emailAddr = emailAddr; } public String[] getSubscriptionIds( ) { return subscriptionIds; } public void setSubscriptionIds(String[] subscriptionIds) { this.subscriptionIds = subscriptionIds; } public void save( ) { StringBuffer subscriptions = new StringBuffer( ); if (subscriptionIds != null) { for (int i = 0; i < subscriptionIds.length; i++) { subscriptions.append(subscriptionIds[i]).append(" "); } } System.out.println("Subscriber Email Address: " + emailAddress + "\nSubscriptions: " + subscriptions); }}
當預訂被確定更新的時候,信息需要被保存到數據庫,但在這裡,我們並沒有將數據保存到數據庫,而是使用System.out將保存的結果輸出。當用戶確認自己輸入信息的時候,我們需要一個類來監聽save動作,當save動作發生時就調用該方法保存信息。
import com.mycompany.newsservice.models.Subscriber; public class SubscriberHandler { private Subscriber subscriber; public void setSubscriber(Subscriber subscriber) { this.subscriber = subscriber; } public String saveSubscriber( ) { subscriber.save( ); return "success"; }}
除此之外,我們還要寫入faces-config.XML配置文件,具體如下:
最後就是subscribe.JSP頁面文件代碼編寫,即用戶視圖部分,當服務器運行起來後,在網頁浏覽器中可以看到網頁界面。
<%@ taglib uri="http://java.sun.com/JSf/Html" prefix="h" %><%@ taglib uri="http://Java.sun.com/JSf/core" prefix="f" %>