標籤:
JavaBean的概念
JavaBean是一種可重複使用、且跨平台的軟體組件。JavaBean可分為兩種:一種是有使用者介面(UI,User Interface)的JavaBean;還有一種是沒有使用者介面,主要負責處理事務(如資料運算,操縱資料庫)的JavaBean。JSP通常訪問的是後一種JavaBean。
JavaBean的優點
?使得HTML與Java程式分離,這樣便於維護代碼。如果把所有的程式碼都寫到JSP網頁中,會使得代碼繁雜,難以維護
?可以降低開發JSP網頁人員對Java編程能力的要求
?JSP側重於產生動態網頁,交易處理由JavaBean來完成,這樣可以充分利用JavaBean組件的可重用性特點,提高開發網站的效率 編寫一個JavaBean
一個標準的javaBean編寫規則如下
1.JavaBean是一個公用的(public)類
2.JavaBean有一個不帶參數的構造方法
3.JavaBean通過setXXX方法設定屬性,通過getXXX方法擷取屬性,可以用IDE工具的Generate Getters and Setters自動產生。
例如:myeclipse可以右擊編輯區->source->Generate Getters and Setters->Select All->OK,就可以自動產生成員變數的getter and setter方法
下面是一個JavaBean的樣本:
package com.bean;public class Person { private int IDcard; private String name; public int getIDcard() { return IDcard; } public void setIDcard(int iDcard) { IDcard = iDcard; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
在JSP頁面匯入JavaBean類
通過<%@ page import>指令匯入JavaBean類,例如:
<%@ page import="com.bean.*" %>
聲明JavaBean對象
<jsp:useBean>標籤用來聲明JavaBean對象,例如:
<jsp:useBean id="person1" class="com.bean.Person" scope="request" />
<jsp:useBean id="person2" class="com.bean.Person" scope="session" />
1.id就是Person類的執行個體的名字,換這個寫法一看就明白
Person person1=new Person();
2.scope是範圍,取值為JSP的內建對象,詳細參見JSP內建對象。範圍從小到大如下:
>page(預設值)
客戶每次請求訪問JSP頁面時,都會建立一個JavaBean對象。JavaBean對象的有效範圍是客戶請求訪問的當前JSP網頁。JavaBean對象在以下兩種情況下都會結束生命期:
–客戶請求訪問的當前JSP網頁通過<forward>標記將請求轉寄到另一個檔案
–客戶請求訪問的當前JSP頁面執行完畢並向用戶端發迴響應。
>request
客戶每次請求訪問JSP頁面時,都會建立新的JavaBean對象。JavaBean對象的有效範圍為:
–客戶請求訪問的當前JSP網頁
–和當前JSP網頁共用同一個客戶請求的網頁,即當前JSP網頁中<%@ include>指令以及<forward>標記包含的其他JSP檔案
–當所有共用同一個客戶請求的JSP頁面執行完畢並向用戶端發迴響應時,JavaBean對象結束生命週期。
可以通過JavaBean的id在<JSP:getProperty>和<jsp:setProperty>直接引用JavaBean對象,例如:
<jsp:getProperty property="IDcard" name="person1"/>
JavaBean對象作為屬性儲存在HttpRequest對象中,屬性名稱為JavaBean的id,屬性值為JavaBean對象,因此也可以通過HttpRequest.getAttribute()方法取得JavaBean對象,例如:
Person personObj1=(Person)request.getAttribute(“person1”);
>session
JavaBean對象被建立後,它存在於整個Session的生存周期內,同一個Session中的JSP檔案分享權限設定這個JavaBean對象。
可以通過JavaBean的id在<JSP:getProperty>和<jsp:setProperty>直接引用JavaBean對象,例如:
<jsp:getProperty property="IDcard" name="person2"/>
JavaBean對象作為屬性儲存在HttpSession對象中,屬性名稱為JavaBean的id,屬性值為JavaBean對象。除了可以通過JavaBean的id直接引用JavaBean對象外,也可以通過HttpSession.getAttribute()方法取得JavaBean對象,例如:
Person personObj2=(Person)session.getAttribute(“person2”);
>application
JavaBean對象被建立後,它存在於整個Web應用的生命週期內,Web應用中的所有JSP檔案都能共用同一個JavaBean對象。
JavaBean對象作為屬性儲存在application對象中,屬性名稱為JavaBean的id,屬性值為JavaBean對象,除了可以通過JavaBean的id直接引用JavaBean對象外,也可以通過application.getAttribute()方法取得JavaBean對象,例如:
Person personObj3=(Person)application.getAttribute(“person3”);
訪問JavaBean屬性
1.JSP提供了訪問JavaBean屬性的標籤,如果要將JavaBean的某個屬性輸出到網頁上,可以用<jsp:getProperty>標籤,例如:
<jsp:getProperty property="IDcard" name="person1"/>
屬性:
name就是bean的名字,由<jsp:useBean>中的id指定。
property所指定的Bean的屬性名稱。
2.如果要給JavaBean的某個屬性賦值,可以用<jsp:setProperty>標籤:
name:<jsp:useBean>標籤中的id屬性
property:Bean執行個體的屬性。
value:Bean執行個體屬性的值。
param:表單參數
文法:
1)將bean的屬性設定為某個字串或者運算式。如果是字串,這個字串會自動轉化為bean的屬性的類型。如果是運算式,那麼值的類型必須和bean屬性的類型一致。
<jsp:setProperty name="bean的名字" property="bean的屬性" value=<%=expression%>/> <jsp:setProperty name="bean的名字" property="bean的屬性" value=字串/> <jsp:setProperty property="IDcard" name="person1" value="20130001"/>
2)通過表單的參數來設定bean的相應屬性的值。
<jsp:setProperty name="bean的名字" property="*" /> <jsp:setProperty name="bean的名字" property="屬性名稱" param=“參數名”/>
表單中的屬性和javaBean的屬性應該同名。
注意表單中文參數亂碼,可以在Jsp頁面頂部加入
<% request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); %>
JSP與JavaBean