程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JSP--JavaBean,jsp使用javabean

JSP--JavaBean,jsp使用javabean

編輯:JAVA綜合教程

JSP--JavaBean,jsp使用javabean


JSP 最強有力的一個方面就是能夠使用 JavaBean 組件。 按照 Sun 公司的定義, JavaBean是一個可重復使用的軟件組件。實際上 JavaBean 是一種 Java 類,通過封裝屬性和方法成為具有某種功能或者處理某些業務的對象,簡稱 Bean。

一個基本的 JSP 頁面由靜態的 HTML 標簽和 Java 腳本組成,如果 Java腳本和 HTML 標簽大量摻雜在一起,就顯得頁面混雜,不易維護。 JSP 頁面應當將數據的處理過程指派給一個或者幾個 Bean 來完成,而在 JSP 頁面中調用 JavaBean。不提倡大量的數據處理都用 Java 腳本來完成。 JSP 頁面中調用 JavaBean,可有效地分離靜態工作部分和動態工作部分,實現業務邏輯和表現形式的分離。 JavaBean 負責業務邏輯的處理, JSP 負責頁面的展示,如圖 5–1 所示。

JavaBean 簡介

JavaBean 的特點
可以實現代碼的重復利用。
易編寫、 易維護、易使用。
可以在任何支持 Java 的平台上工作,而不需要重新編譯。
可以通過網絡傳輸。
可以與其他 Java 類同時使用。
JavaBean 的應用范圍
JavaBean 傳統的應用在於可視化領域,如 AWT(抽象窗口工具集)和 Swing 下的應用。現在, JavaBean 更多的應用在於非可視化領域,它在服務器端應用方面表現出了越來越強的生命力。非可視化的 JavaBean 和可視化的 JavaBean 同樣使用屬性和事件。非可視化的JavaBean 在 JSP 程序中常用來封裝業務邏輯、數據庫操作等,可以很好地實現業務邏輯和前台頁面的分離,使得系統具有更好的健壯性和靈活性。注意: JavaBean 和 EJB( Enterprise JavaBean)的概念是完全不同的。

編寫 JavaBean 遵循的原則

編寫 JavaBean 就是編寫一個 Java 的類,所以只要學會寫類就能編寫一個 JavaBean,這個類創建的一個對象稱之為 JavaBean。為了讓使用 JavaBean 的應用程序構建工具(比如 JSP引擎)知道這個 Bean 的屬性和方法, JavaBean 的類需要遵守以下規則:
1、必須具備一個零參數的構造方法,顯式地定義這樣一個構造方法或者省略所有的構造方法都能滿足這項要求。
2、成員變量也稱為屬性, JavaBean 不應該有公開的成員變量,使用存取方法讀取和修改屬性, 而不允許對字段直接訪問。 屬性的名字建議以小寫英文字母開頭。
3、屬性的值通過 getXxx()和 setXxx()方法來訪問。如果類有 String 類型的屬性 title,讀取 title 的方法是返回 String 的 getTitle(), 修改 title 的方法是 setTitle(String title)。
4、布爾型的屬性的讀取方法可以使用 getXxx(),也可以使用 isXxx()。
5、JavaBean 需要聲明在包裡面, package 保留字給類起一個包名。

舉個例子:

package com.wuyudong;
 
public class User {
    private String userName;
    private String password;
    
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

訣竅: Eclipse 可以幫助我們生成 getter 和 setter 方法,右鍵 Source→ Generate  Getters and Setters

<jsp:useBean>

JSP 頁面中可以<jsp:useBean>動作元素在 JSP 頁面中使用 JavaBean 對象,這樣就可以將大部分業務處理邏輯封裝在 JavaBean

<jsp:useBean>動作元素用來在 JSP 頁面中獲取或者創建一個 JavaBean 對象,並指定它的名字和作用范圍。 JSP 容器確保 JavaBean 對象在指定的范圍內可以使用。 <jsp:useBean>的語法格式如下:
<jsp:useBean id="beanName" class="package.BeanClassName" scope="page | request | session | application"/>

當服務器上某個含有<jsp:useBean>動作元素的 JSP 頁面被加載執行時, JSP 引擎首先根據 ID 給出的 JavaBean 的名字( beanName),在 scope 范圍對應的 JSP 內部對象上查找是否有這個名字的屬性( Attribute)。如果在指定范圍內找到了與 beanName 同名的屬性, JSP 引擎返回屬性對應的對象的引用。如果沒有在指定的范圍內找到與 beanName 同名的屬性, JSP引擎根據 class 屬性給出的包名和類名,創建一個該類的對象, 並將該對象作為屬性名為beanName 的一個屬性的值,綁定到 scope 范圍對應的 JSP 內部對象上。由於 pageContext對象可以操作各個范圍的屬性,實際上 JavaBean 的查找和綁定都是通過 pageContext 對象來完成的。 如果沒有指定 JavaBean 的范圍,默認范圍是 page。

實戰一下:

JavaBean

package com.wuyudong;
 
public class Bean {
    private String name;
 
    public String getName() {
        return name + " 的JavaBean程序!";
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

index.jsp

<jsp:useBean id="bean" class="com.wuyudong.Bean"></jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        bean.setName("wuyudong");
    %>
    <h1 align="center"><%=bean.getName()%></h1>
</body>
</html>

<jsp:setProperty>

<jsp:setProperty>動作元素用來設置 JavaBean 的簡單屬性和索引屬性。 <jsp:setProperty>使用 JavaBean 的 setter 方法設置一個或多個屬性的值。

<jsp:setProperty>可以使用 value 給出屬性的取值, 取值可以是一個字符串,也可以是一個 JSP 表達式( <%= %>)。
<jsp:setProperty name="beanName" property="propertyName" value="propertyValue"/>

實戰:

創建javabean對象

package com.wuyudong;
 
public class Student {
    private int id;
    private int age;
    private String classes;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getClasses() {
        return classes;
    }
    public void setClasses(String classes) {
        this.classes = classes;
    }
}

創建form表單放在index.jsp中

<form action="student.jsp" method="post">
        <p>
            學號: <input type="text" name="id">
        </p>
        <p>
            年齡: <input type="text" name="age">
        </p>
        <p>
          <input type="submit" value="提交">
          <input type="reset" value="重 置">
        </p>
    </form>

<jsp:getProperty>

<jsp:getProperty>動作元素用來訪問一個 JavaBean 的屬性。訪問的屬性值將被轉化成字符串,然後發送到輸出流中。如果屬性是一個對象,將調用該對象的 toString()方法。<jsp:getProperty>動作元素是通過調用 JavaBean 的 getter 方法獲取屬性的。
<jsp:getProperty name="beanName" property="propertyName"/>

注意: <jsp:getProperty>使用 name 屬性給出 JavaBean 的名字,而<jsp:useBean>使用 id 屬性給出 JavaBean 的名字,實際上它們是一致的,都是指綁定在特定范圍對象的一個屬性( Attribute)的名字。

實戰一下:

創建JavaBean對象

package com.wuyudong;
 
public class Book {
    private String bookName;
    private String author;
    private String category;
    private double price;
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
}

在index.jsp頁面中對其操作

<body>
        <!-- 實例化Book對象 -->
        <jsp:useBean id="book" class="com.lyq.Book"></jsp:useBean>
        <!-- 對Book對象賦值 -->
        <jsp:setProperty name="book" property="bookName" value="《JAVA程序設計標准教程》"/>
        <jsp:setProperty name="book" property="author" value="科技"/>
        <jsp:setProperty name="book" property="category" value="Java圖書"/>
        <jsp:setProperty name="book" property="price" value="59.00"/>
        <table align="center" border="1" cellpadding="1" width="350" height="100" bordercolor="green">
            <tr> 
                <td align="right">圖書名稱:</td>
                <td><jsp:getProperty name="book" property="bookName"/> </td>
            </tr>
            <tr> 
                <td align="right">作 者:</td>
                <td><jsp:getProperty name="book" property="author"/> </td>
            </tr>
            <tr> 
                <td align="right">所屬類別:</td>
                <td><jsp:getProperty name="book" property="category"/> </td>
            </tr>
            <tr> 
                <td align="right">價 格:</td>
                <td><jsp:getProperty name="book" property="price"/> </td>
            </tr>
        </table>
    </body>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved