1. 程式人生 > >JSP學習筆記(三)

JSP學習筆記(三)

jsp與javabean

  1. 編寫javabean
  2. 建立與使用bean
  3. 獲取和修改bean的屬性

javabean是一種java類,是通過封裝屬性和方法成為具有某種功能或處理某個業務的物件,簡稱bean,javabean是基於java語言的,因此不依賴平臺,具有以下特點:
1.可以實現程式碼的重複利用
2.易編寫、易維護、易使用
3.可以在任何安裝了java執行環境的平臺上使用而不需要重新編譯

1.編寫javabean

[1]如果類的成員變數的名字為xxx,那麼類中必須提供兩個方法:
getXxx()用來獲取屬性xxx
setXxx()用來修改屬性xxx
[2]boolean型別的成員變數允許使用is代替get和set
[3]類中宣告的方法的訪問屬性必須是public
[4]類中的構造方法必須是public、無引數的
例:

package pojo;

public class Student {
    private String name;
    private int age;

    public Student() { }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2.建立與使用bean

[1]使用bean

使用JSP動作標記useBean來載入使用
<jsp:useBean id=“bean的名字” class=“建立的bean位元組碼檔案(必須把bean放在包中,並在填寫時註明)” scope=“bean的有效範圍”></jsp:useBean>

 <jsp:useBean id="student" class="pojo.Student" scope="page"></jsp:useBean>

[2]bean的載入原理

載入原理:JSP引擎將首先根據JSP動作標記useBean給出的bean的id名字以及scope給出的使用範圍(bean生命週期),在一個同步塊中查詢JSP引擎內建pageContent物件中是否含有這樣的bean。如果這樣的bean存在,JSP引擎就分配這樣的bean給使用者(這樣提高了JSP使用bean的效率),如果pageContent中沒有找到JSP動作標記要求的bean,就根據class指定的位元組碼建立一個JSP動作標記useBean要求的bean,並將所建立的bean新增到pageContent內建物件中

[3]bean的有效範圍(生命週期)

(1)scope取值page
只在當前頁面有效,有效期直到頁面執行完畢(不同使用者的取值為page的bean是不同的)
(2)scope取值session
當用戶的會話(session)消失,JSP引擎才取消所分配的bean,即使用者訪問web服務目錄下的各個頁面都有效,直到使用者的會話(session)消失。(不同瀏覽器的scope取值為session的bean是不同的)
(3)scope取值為request
當前頁面有效,直到響應結束(略長於page)
(4)scope取值為application
web服務目錄下所有JSP頁面有效,直到伺服器關閉(不同使用者的scope取值為application的bean是相同的)

3.獲取和修改bean的屬性

[1]setProperty動作標記

第一種設定方式

	<jsp:useBean id="student" class="pojo.Student" scope="application"></jsp:useBean> //記得先用useBean加載出來
	<jsp:setProperty name="student" property="age" value="<%=18%>"></jsp:setProperty> //設定bean的屬性值

value的值的型別必須與bean的屬性的型別一致,如果將字串設定為bean的屬性值,那麼這個字串會自動被轉化成bean的屬性的型別,如果試圖將字串ab23存到上面的age中,則JSP引擎會有以下操作:

    Integer.parseInt("ab23");

則會出現NumberFormatException異常

另一種設定方法

通過HTTP表單的引數的值來設定bean的值,如:

<form action = "本頁面" Method = "post">
    <input type = "text" name = "name">
	<input type = "text" name = "age">
	<input type = "submit" value = "提交">
</form>
<jsp:setProperty name="student" property="name" param="name"></jsp:setProperty>
<jsp:setProperty name="student" property="age" param="age"></jsp:setProperty>

像這種property給出的bean屬性名與表單的param(name)名相同的也可以這樣寫:

<jsp:setProperty name="student" property="*"></jsp:setProperty>

[2]getProperty動作標記

<jsp:useBean id="student" class="pojo.Student" scope="application"></jsp:useBean>
<jsp:setProperty name="student" property="age" value="18"></jsp:setProperty>
<jsp:getProperty name="student" property="age"></jsp:getProperty>   //獲取bean的age屬性的值