??????JSF的開發,核心是事件驅動,組件和標簽的封裝程度非常高,很多典型應用已經不需要開發者去處理http。頁面操作會被自動映射到對應的java?bean中,后臺邏輯只需要同java?bean發生交互。整個過程是通過“依賴注入(DI)”來實現的,其設計思想與spring相似。
??????下面實例所用的東東包括:Eclipse3.1+MyEclipse4.1,?? tomcat5.0,?? jstl 1.1,? jsf? 。
SayHello 類
package org.cssseek.jsf.model.hello;
public class SayHello {
??? public String say(String name)
??? {
??????? return "你好,"+name;
??? }
}
HelloDelegater 類
package org.cssseek.jsf.control.hello;
import org.cssseek.jsf.model.hello.*;
public class HelloDelegater {
???
??? //------屬性---------
??? private String name;//表單中的文本框數據會傳到這里
??? private String result;//web頁會從這里取得運行結果
??? private SayHello sayHello;//model層的對象,并不事例化,由系統注入
???
??? //-----set/get--------
??? public String getName() {
??????? return name;
??? }
??? public void setName(String name) {
??????? this.name = name;
??? }
??? public SayHello getSayHello() {
??????? return sayHello;
??? }
??? public void setSayHello(SayHello sayHello) {
??????? this.sayHello = sayHello;
??? }
??? public String getResult() {
??????? return result;
??? }
??? public void setResult(String result) {
??????? this.result = result;
??? }
???
??? //-----邏輯方法---------
??? public String say()
??? {
??????? this.setResult(sayHello.say(this.getName()));
??????? return "ok";
??? }
}
index.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="<%@ taglib uri="<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
? <head>
??? <base href="<%=basePath%>">
???
??? <title>My JSP 'index.jsp' starting page</title>
???
??? <meta http-equiv="pragma" content="no-cache">
??? <meta http-equiv="cache-control" content="no-cache">
??? <meta http-equiv="expires" content="0">
??? <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
??? <meta http-equiv="description" content="This is my page">
???
??? <!--
??? <link rel="stylesheet" type="text/css" href="styles.css">
??? -->
? </head>
?<body>
??? <f:view>
??????? <h:form>
??????????? <h:panelGrid columns="3">
??????????????? <h:outputLabel for="name" value="姓名:"/>
??????????????? <h:inputText id="name" value="#{HelloDelegater.name}" required="true"/>
??????????????? <h:message for="name"/>
???????????????
??????????????? <h:outputLabel value="#{HelloDelegater.result}"/>
??????????? </h:panelGrid>
??????????? <h:panelGroup>
??????????????? <h:commandButton action="#{HelloDelegater.say}" value="提交"/>
??????????? </h:panelGroup>
??????? </h:form>
??? </f:view>
? </body>
</html>
faces-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "
<faces-config>
?<managed-bean>
??????? <managed-bean-name>SayHello</managed-bean-name>
??????? <managed-bean-class>
??????????? org.cssseek.jsf.model.hello.SayHello
??????? </managed-bean-class>
??????? <managed-bean-scope>request</managed-bean-scope>
??? </managed-bean>
??? <managed-bean>
??????? <managed-bean-name>HelloDelegater</managed-bean-name>
??????? <managed-bean-class>
??????????? org.cssseek.jsf.control.hello.HelloDelegater
??????? </managed-bean-class>
??????? <managed-bean-scope>request</managed-bean-scope>
??????? <managed-property>
??????????? <property-name>sayHello</property-name>
??????????? <value>#{SayHello}</value>
??????? </managed-property>
??? </managed-bean>
?
</faces-config>
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://localhost:8080/hellojsfdemo/index.faces
這個實例就到此結束啦。具體操作這里就沒有詳細寫出來,讀者自己看看吧。
posted on 2006-03-21 17:50
cssseek 閱讀(1752)
評論(1) 編輯 收藏