精通struts技術第二章(4) (轉)

worldblog發表於2007-08-17
精通struts技術第二章(4) (轉)[@more@]

標準Actions:namespace prefix = o ns = "urn:schemas--com::office" />

標準Actions是預先定義的標籤。這標籤很容易用來封裝action。

在JSP中有兩種型別的標準action。第一種:Bean,第二種:由另外的標準action組成。

JavaBeans有三種相應的標籤設定:, .。

在定義三個標籤後,我們會建立一個例子:

 是 JavaBean的標準行為。它透過ID號和範圍來例項化一個JavaBean 。

表2.4對的屬性進行說明,表2.5定義了行為的範圍。行為非常靈活如果到,將去尋找是否存在相同ID和pe,如果例項不存在,它會建立一個,把名稱空間和ID號關聯並起來。語法如下:

scope="page|request|session|application" tpeSpec>

body

typeSpec ::=class="className" |

class="className" type="typeName" |

type="typeName" class="className" |

beanName="beanName" type="typeName" |

type="typeName" beanName="beanName" |

type="typeName"

表2.4屬性:

屬性

定義

id

這個鍵關聯指定範圍的例項化。這個鍵大小寫敏感。這個id屬性的鍵和page.getAttribute方法取得的是一樣。

Scope

物件的生命週期。範圍選項page, request, session, and application.在表2.5中定義。

表 2.5: 的範圍值:

定義

page

只能在被建立的頁面中使用。當前頁面完成工作時,引用的物件會被釋放掉。

request

只為同一個請求服務。只在請求中例項化,也包括轉向請求。所有引用的物件在請求完成時被釋放。

session

只處理有相同session的請求,引用的物件也是在session中建立的。當session終止時引用物件被釋放。

Application

在相同的應用中被使用。當JSP/容器關閉,引用物件被釋放。

用於設定bean屬性的值。它要設定的屬性所在的物件必須已經存在。

語法如下:

name屬性時bean的例項化名稱。

property="*" |

property="propertyName" |

property="propertyName" param="parameterName" |

property="propertyName" value="propertyValue"

表2.6的屬性列表:

屬性

說明

name

是透過例項化的bean

property

設定一個屬性的值。如果你對propertyName設定“*“,會取出ServletRequest中所有的引數集合。匹配引數名值型別屬性名和設定方法型別。並設定每一個匹配的屬性的值。如果引數值為空,相關的屬性是左未更改的。.

param

你要設定值的屬性名稱。

value

對bean的屬性賦值

.

用來獲取例項化的bean的屬性值,轉換成java.lang.String型別併產生輸出。

在使用前bean必須被例項化。語法如下:

表2.7介紹了的屬性:

屬性

說明

name

獲取例項化的bean的名稱,在中定義

Property

從例項化的bean中獲取值的屬性的名稱

一個JavaBean例子

為了學習如何使用JavaBean,讓我們建立一個例子。這個例子實現一個簡單的計數器JavaBean。這個計數器有簡單的int型別的count屬性。它用來統計當前bean屬性被訪問的次數。另外它也包含了相應的設定獲取屬性的方法。

表2.11為Counter bean程式碼:Counter.java.

----------------------------------------------------------------

package chapter2;

public class Counter {

int count = 0;

39

public Counter() {

}

public int getCount() {

count++;

return count;

}

public void setCount(int count) {

this.count = count;

}

}

----------------------------------------------------------

讓我們來看訪問JavaBean的JSP頁面:

列表 2.12  counter.jsp.

-------------------------------------------------------------

<!-- Set the scripting language to java --&gt

Bean Example

<!-- Instantiate the Counter bean with an id of "counter" --&gt

class="chapter2.Counter" />

// write the current value of the property count

out.println("Count from scriptlet code : "

+ counter.getCount() + "
");

%>

<!-- Get the the bean’s count property, --&gt

<!-- using the jsp:getProperty action. --&gt

Count from jsp:getProperty :


----------------------------------------------------------------------------------------------

Counter.jsp有四個JSP。第一個:告訴JSP容器指令碼語言為:java

第二步:用例項化一個Counter物件,id為counter,範圍為session。

現在我們可以在JSP中引用名稱為counter的例項。下面的程式碼例項化Counter:

有兩個種方法指明如何獲取當前bean屬性的值。第一種是在JSP指令碼中使用一個方法訪問bean屬性。它是透過訪問bean的ID並getCount()得到的。指令碼程式碼如下:

// write the current value of the property count

out.println("Count from scriptlet code : "

+ counter.getCount() + "
");

%>

第二種是透過取得當前bean屬性的值。

訪問對應的屬性,繫結它的屬性值並輸出到HTML中。

<!-- Get the bean’s count property, --&gt

<!-- using the jsp:getProperty action. --&gt

Count from jsp:getProperty :


當你執行Counter.jsp,你會發現下一次的結果值大於前一次的。這是因為每次訪問count屬性都會呼叫getCount()方法,所以每次count的值都會增加。

編譯Counter.java,把類複製到:

<CATALINA_HOME>/wileyapp/WEB-INF/classes/chapter2/目錄下,複製Counter.jsp到

<CATALINA_HOME>/wileyapp/ 目錄。在中輸入地址:

提供引數和值。

,

, and

表2.8說明了

屬性

說明

name

引用的引數名稱

value

對應引數名稱的值

作者:James Goodwill  翻譯:周海方

歡迎轉載,前提是註明出處和譯者

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-963630/,如需轉載,請註明出處,否則將追究法律責任。

相關文章