一個基于JSF技術的簡單示例(部分翻譯)
2024-07-21 02:14:13
供稿:網友
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配置文件,具體如下:
<faces-config> ... <managed-bean> <managed-bean-name>subscr</managed-bean-name> <managed-bean-class> com.mycompany.newsservice.models.subscriber </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>subscrhandler</managed-bean-name> <managed-bean-class> com.mycompany.newsservice.handlers.subscriberhandler </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>subscriber</property-name> <value>#{subscr}</value> </managed-property> </managed-bean> ...</faces-config>
最后就是subscribe.jsp頁面文件代碼編寫,即用戶視圖部分,當服務器運行起來后,在網頁瀏覽器中可以看到網頁界面。
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %><%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %><html> <head> <title>newsletter subscription</title> </head> <body> <f:view> <h:form><table><tr> <td>email address:</td><td><h:inputtext value="#{subscr.emailaddr}" /> </td> </tr> <td> <td>news letters:</td> <td> <h:selectmanycheckbox value="#{subscr.subscriptionids}"> <f:selectitem itemvalue="1" itemlabel="jsf news" /> <f:selectitem itemvalue="2" itemlabel="it industry news" /> <f:selectitem itemvalue="3" itemlabel="company news" /> </h:selectmanycheckbox> </td> </tr> </table> <h:commandbutton value="save" action="#{subscrhandler.savesubscriber}" /> </h:form> </f:view> </body></html>