藉由這些標準化動作
可以讓JSP頁面不會有Scripting的程式
一可以去做基本的存取
達到好維護的便利性
也增加網頁開發人員開發時可以不須理解java程式
Scripting的程式 = Scriptlet,宣告以及運算式
相關動作如下:
useBean
定義:宣告及初始化bean屬性
若在指定的範圍內找不到相關的屬性,則自己會建立一個新的
//使用bean一定宣告
//scope定義這個bean要屬於哪個範圍(application,page,request,session)default為page
<jsp:useBean id="student" class="com.student" scope="request" />
getProperty
定義:取得bean屬性的某個特性值
可以取得bean class裡面具有getter和setter的屬性值
<jsp:getProperty property="name" name="student"/>
setProperty
定義:設定bean屬性的某個特性值
可以取得bean class裡面具有getter和setter的屬性值
<jsp:setProperty property="name" name="student" value="Zarek"/>
usebean Body
定義:可根據情況而去處理是否該執行
只有在找不到Bean而且建立新的bean時
才會去執行該區段的程式碼
<jsp:useBean id="student" class="com.student" scope="request">
//body
<jsp:setProperty property="name" name="student" value="Zarek"/>
</jsp:useBean>
type屬性
定義:提供產生polymorphic的bean參考方式
type可以是類別,抽象類別或是interface
//type指得是student這個抽象類別,但是用另一個highschool去實做
<jsp:useBean id="student" type="com.student" class="com.highschool" scope="request" />
若使用type但沒有宣告class
會根據呼叫的bean物件是否有存在
若有存在則正常運作,若無則會拋出錯誤
如果有type而沒有clas,bean物件必須已經存在於指定得作用域中。
如果有class(不管有無type),class不能是抽象的
而且必須提供公用的無參數建構式
type => 參考型別 =>用來宣告參考的(可以為抽象)
class => 物件型別 =>用來宣告物件(必須為具體)
param屬性
因有時候會直接在JSP使用action呼叫另一支JSP
而不是透過Servlet,這時就會需要取得前端的欄位值
再丟到bean
定義:提供將request的參數值給特定的bean
表示法1
//userID就是在html 的form裡面的name元素值
<jsp:useBean id="student" class="com.student" scope="request">
<jsp:setProperty property="name" name="student" param="userID"/>
</jsp:useBean>
表示法2
直接讓input欄位的名稱與bean的特性名稱相同
//這樣的寫法,會將前端input裡的name元素內容
//set到property的值為name的特性名稱
//property可以用*代替,將只要有符合地都set過去
<jsp:useBean id="student" class="com.student" scope="request">
<jsp:setProperty property="name" name="student"/>
</jsp:useBean>
今天先整理一下javaBean的部分
明天會繼續提到為什麼會需要用EL的原因
以及其介紹