天天看點

JAVA入門[12]-JavaBean

JavaBean是特殊的Java類,使用Java語言書寫,并且遵守規範:

提供一個預設的無參構造函數。

需要被序列化并且實作了Serializable接口。

可能有一系列可讀寫屬性。

可能有一系列的"getter"或"setter"方法。

<code>package</code> <code>com.cathy.domain;</code>

<code>public</code> <code>class</code> <code>Category </code><code>implements</code> <code>java.io.Serializable{</code>

<code>    </code><code>public</code> <code>Category(){}</code>

<code>    </code><code>private</code> <code>int</code> <code>cateId;</code>

<code>    </code><code>private</code> <code>String cateName;</code>

<code>    </code><code>public</code> <code>int</code> <code>getCateId() {</code>

<code>        </code><code>return</code> <code>cateId;</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>void</code> <code>setCateId(</code><code>int</code> <code>cateId) {</code>

<code>        </code><code>this</code><code>.cateId = cateId;</code>

<code>    </code><code>public</code> <code>String getCateName() {</code>

<code>        </code><code>return</code> <code>cateName;</code>

<code>    </code><code>public</code> <code>void</code> <code>setCateName(String cateName) {</code>

<code>        </code><code>this</code><code>.cateName = cateName;</code>

<code>}</code>

  

1. &lt;jsp:useBean&gt; 标簽可以在JSP中聲明一個JavaBean,文法格式如下:

<code>&lt;jsp:useBean id=</code><code>"bean 的名字"</code> <code>scope=</code><code>"bean 的作用域"</code> <code>/&gt;</code>

其中scope的值可以是page,request,session或application

2.設定和擷取JavaBean屬性

在 &lt;jsp:useBean&gt; 标簽主體中使用 &lt;jsp:getProperty/&gt; 标簽來調用 getter 方法擷取屬性,使用 &lt;jsp:setProperty/&gt; 标簽調用 setter 方法設定屬性。文法格式:

<code>&lt;jsp:useBean id=</code><code>"id"</code> <code>class</code><code>=</code><code>"bean 類"</code> <code>scope=</code><code>"bean 作用域"</code><code>&gt;</code>

<code>&lt;jsp:setProperty name=</code><code>"bean 的 id"</code> <code>property=</code><code>"屬性名"</code>

<code>value=</code><code>"value"</code><code>/&gt;</code>

<code>&lt;jsp:getProperty name=</code><code>"bean 的 id"</code> <code>property=</code><code>"屬性名"</code><code>/&gt;</code>

<code>   </code><code>...........</code>

<code>&lt;/jsp:useBean&gt;</code>

其中name屬性指的是Bean的id屬性,property屬性指的是想要調用的getter或setter方法

1.示例:在目前jsp頁面設定和擷取javabean屬性

<code>&lt;jsp:useBean id=</code><code>"category"</code> <code>class</code><code>=</code><code>"com.cathy.domain.Category"</code><code>&gt;</code>

<code>    </code><code>&lt;jsp:setProperty name=</code><code>"category"</code> <code>property=</code><code>"cateId"</code> <code>value=</code><code>"2"</code><code>&gt;&lt;/jsp:setProperty&gt;</code>

<code>    </code><code>&lt;jsp:setProperty name=</code><code>"category"</code> <code>property=</code><code>"cateName"</code> <code>value=</code><code>"女裝"</code><code>&gt;&lt;/jsp:setProperty&gt;</code>

<code>&lt;div&gt;</code>

<code>    </code><code>id:&lt;jsp:getProperty name=</code><code>"category"</code> <code>property=</code><code>"cateId"</code><code>&gt;&lt;/jsp:getProperty&gt;</code>

<code>&lt;/div&gt;</code>

<code>    </code><code>name:&lt;jsp:getProperty name=</code><code>"category"</code> <code>property=</code><code>"cateName"</code><code>&gt;&lt;/jsp:getProperty&gt;</code>

2.示例:在edit.jsp 頁面form表單送出資訊,在detail.jsp頁面中顯示。

edit.jsp

<code>&lt;form action=</code><code>"/category/detail"</code> <code>method=</code><code>"post"</code><code>&gt;</code>

<code>    </code><code>商品id:&lt;input type=</code><code>"number"</code> <code>name=</code><code>"cateId"</code><code>&gt;</code>

<code>    </code><code>商品名稱:&lt;input type=</code><code>"text"</code> <code>name=</code><code>"cateName"</code><code>&gt;</code>

<code>    </code><code>&lt;input type=</code><code>"submit"</code> <code>value=</code><code>"送出"</code><code>&gt;</code>

<code>&lt;/form&gt;</code>

detail.jsp

如果表單中的屬性名稱和JavaBean中屬性對應,那麼可以簡化jsp:setProperty寫法,直接property="*"

<code>    </code><code>&lt;jsp:setProperty name=</code><code>"category"</code> <code>property=</code><code>"*"</code><code>&gt;&lt;/jsp:setProperty&gt;</code>

<code>&lt;table&gt;</code>

<code>    </code><code>&lt;tr&gt;</code>

<code>        </code><code>&lt;td&gt;id:&lt;/td&gt;&lt;td&gt;&lt;jsp:getProperty name=</code><code>"category"</code> <code>property=</code><code>"cateId"</code><code>&gt;&lt;/jsp:getProperty&gt;&lt;/td&gt;</code>

<code>    </code><code>&lt;/tr&gt;</code>

<code>    </code><code>&lt;tr&gt;&lt;td&gt;名稱:&lt;/td&gt;&lt;td&gt;&lt;jsp:getProperty name=</code><code>"category"</code> <code>property=</code><code>"cateName"</code><code>&gt;&lt;/jsp:getProperty&gt;&lt;/td&gt;&lt;/tr&gt;</code>

<code>&lt;/table&gt;</code>

問題:通過表單送出中文資料時遇到亂碼問題:

<code>&lt;%request.setCharacterEncoding(</code><code>"UTF-8"</code><code>);%&gt;</code>

效果:

JAVA入門[12]-JavaBean
JAVA入門[12]-JavaBean

3.示例:JavaBean實作通路計數

首先建立計數JavaBean:

<code>public</code> <code>class</code> <code>Counter {</code>

<code>    </code><code>private</code>  <code>int</code> <code>total=</code><code>0</code><code>;</code>

<code>    </code><code>public</code> <code>int</code> <code>getTotal() {</code>

<code>        </code><code>return</code> <code>total++;</code>

在index.jsp和edit.jsp檔案中調用該JavaBean,注意将scope設定為application。

<code>&lt;jsp:useBean id=</code><code>"counter"</code> <code>class</code><code>=</code><code>"com.cathy.domain.Counter"</code> <code>scope=</code><code>"application"</code><code>&gt;&lt;/jsp:useBean&gt;</code>

<code>    </code><code>通路計數:&lt;jsp:getProperty name=</code><code>"counter"</code> <code>property=</code><code>"total"</code><code>&gt;&lt;/jsp:getProperty&gt;</code>

重新整理這兩個頁面時,都能實作計數器累加。

    本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/p/6518322.html,如需轉載請自行聯系原作者