jsp中對於 的使用


JavaBeans的解釋:JavaBeans是java中的一種常見的類。最初的設計用於java的GUI,通過拖動組件就可以建立一個Button,為此需要Button這個類有一個無參構造方法,用於反射創建。為了方便調節Button的背景顏色,寬高等屬性,需要統一的一套獲取屬性和設置屬性的方法,即規范中的getXxx()和setXxx()。這樣就能用反射獲取Button的各項屬性,然后在通過對應的get和set方法進行設置。並且在完成GUI的設計后,需要能夠在重啟IDE的情況下打開原來的設計,所以還需要能過夠序列化。為了安全,需要將屬性私有。Button要能點擊出現事件,所以還要能綁定事件。屬性、方法、事件,這樣就成了初代的JavaBean,作為一個組件存在,方便復用。通過調用不同的組件就可以快速拼裝出一個新產品。當然這是可視化的JavaBean,本篇談論的是另一類不可視化的JavaBean在jsp中的使用。在jsp中的JavaBean,有以下要求,要區分和可視化JavaBean的不同,不需要事件和序列化。(另個人感覺VO,POJO,EJB都是JavaBean在不同情況下的表現形式)

1、類是public

2、提供一個默認的無參構造函數

3、通過一系列的getter或setter方法來設置屬性

 <jsp:useBean>:jsp中使用此標簽有四個屬性,id指定Bean的對象名。class指定Bean的完成包名,說明了類型。type指定將引用該對象變量的類型。beanName通過java.beans.Beans的instantiate()方法指定Bean的名字。如下使用

<jsp:useBean id="user" class="com.shixun.User"/>

這樣就new了一個User類型的對象,對象名為user。在page屬性中。

<jsp:setProperty>:jsp中的這個標簽的使用較為復雜,本篇主要介紹的就是這個。首先該標簽有兩種用法,1、在<jsp:useBean>標簽外。2、在<jsp:useBean>標簽內。

<jsp:useBean id="user" class="com.shixun.User"/>    //標簽已經關閉
<jsp:setProperty property="*" name="user"/>     //在useBean標簽外

這種在標簽外的設值方式,jsp:setProperty一定會執行。放在內部的方式

<jsp:useBean id="user" class="com.shixun.User">
    <jsp:setProperty property="*" name="user"/>
</jsp:useBean>

這種設值方式,只有新建Bean實例時才會執行,如果時使用現有實例則不會執行jsp:setProperty。

jsp:setProperty一共有四個屬性,name指定設置的是那個對象,對應着useBean中的id值。property屬性對應對象中的設置的是哪個屬性。value用來指定Bean的值。添加的字符串數據會同過標准的valueOf方法轉換成對應的基本類型的封裝類型。(java中默認的類型轉換包括boolean, byte, short, int, long, float, double, 還有java.lang.String, java.awt.Color, java.awt.Font。這些就是屬性編輯器)最后一個屬性為param不可與value同時使用,只能選其一。它制定了用那個請求參數作為Bean屬性的值。如果當前請求沒有參數,則什么也不做。這時可以將Bean中設置默認值,當有參數的時候再進行屬性值的更新。

jsp:setProperty的四種使用方法。使用不出錯的前提是property中的參數不能出錯。

第一種:

<jsp:setProperty property="*" name="user"/>    <!-- 注意在useBean創建之后,如果沒有找到對應的屬性則設為null -->

這種方法的使用較為簡單,賦值的方式是,將request中的參數名稱與Bean中屬性名匹配,然后賦值,按照上文的類型轉換處理。注意這里的參數是request.getParameter()中取得的,並不是getAttribute()中的。在第一個頁面中設置request的屬性,然后利用<jsp:forward page="vertify.jsp"></jsp:forward>到第二個頁面,觀察Bean是否裝配,即可驗證。

第二種:

<jsp:setProperty property="id" name="user"/>
<jsp:setProperty property="psss" name="user"/>  <!-- request中沒有psss,報錯 -->

這種方式是第一種方式的定制版本。需要給Bean中的哪個屬性賦值就setProperty其中的屬性。操作的是request中的參數。

第三種:

<jsp:setProperty property="id" name="user" value="123"/>
<jsp:setProperty property="atime" name="user" value="2020-10-10"/> <!-- 筆者自定義了Date的類型轉換 -->

這種其實就是簡單的直接賦值,value會通過上文中的屬性編輯器轉換為對應的類型。

第四種:

<jsp:setProperty property="id" name="user" param="pwd"/>
<jsp:setProperty property="atime" name="user" param="123"/><!-- param中的參數不存在則,會給Bean中的atime屬性賦值為null -->

這種比較方便了,參數param指定的是request中的參數,property指定的是Bean中的參數,這樣可以不需要將request和Bean中的參數名對應,但是像這樣就相當於手動調節了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM