JSP - JavaBean



JavaBean 是一個用 Java 編寫並根據 JavaBeans API 規範編碼的特殊構造的 Java 類。

以下是將 JavaBean 與其他 Java 類區分開的獨特特徵:

  • 它提供了一個預設的無引數建構函式。

  • 它應該是可序列化的,並且可以實現 **Serializable** 介面。

  • 它可能具有一些可以讀取或寫入的屬性。

  • 它可能具有一些用於屬性的“**getter**”和“**setter**”方法。

JavaBean 屬性

JavaBean 屬性是可以由物件使用者訪問的命名屬性。該屬性可以是任何 Java 資料型別,包括您定義的類。

JavaBean 屬性可以是 **只讀、可寫、只讀** 或 **只寫**。JavaBean 屬性透過 JavaBean 實現類中的兩種方法訪問:

序號 方法和描述
1

get**PropertyName**()

例如,如果屬性名稱為 *firstName*,則您的方法名稱將為 **getFirstName()** 以讀取該屬性。此方法稱為訪問器。

2

set**PropertyName**()

例如,如果屬性名稱為 *firstName*,則您的方法名稱將為 **setFirstName()** 以寫入該屬性。此方法稱為修改器。

只讀屬性將僅具有 **getPropertyName()** 方法,而只寫屬性將僅具有 **setPropertyName()** 方法。

JavaBean 示例

考慮一個具有少量屬性的學生類:

package com.tutorialspoint;

public class StudentsBean implements java.io.Serializable {
   private String firstName = null;
   private String lastName = null;
   private int age = 0;

   public StudentsBean() {
   }
   public String getFirstName(){
      return firstName;
   }
   public String getLastName(){
      return lastName;
   }
   public int getAge(){
      return age;
   }
   public void setFirstName(String firstName){
      this.firstName = firstName;
   }
   public void setLastName(String lastName){
      this.lastName = lastName;
   }
   public void setAge(Integer age){
      this.age = age;
   }
}

訪問 JavaBean

**useBean** 動作宣告一個 JavaBean 以在 JSP 中使用。聲明後,該 Bean 成為一個指令碼變數,可以被 JSP 中使用的指令碼元素和其他自定義標籤訪問。**useBean** 標籤的完整語法如下:

<jsp:useBean id = "bean's name" scope = "bean's scope" typeSpec/>

此處,**scope** 屬性的值可以是 **page、request、session** 或 **application**,具體取決於您的需求。**id** 屬性的值可以是任何值,只要它在同一 JSP 中的其他 **useBean 宣告**中是唯一的即可。

以下示例演示如何使用 useBean 動作:

<html>
   <head>
      <title>useBean Example</title>
   </head>
   
   <body>
      <jsp:useBean id = "date" class = "java.util.Date" /> 
      <p>The date/time is <%= date %>
   </body>
</html>

您將收到以下結果:

The date/time is Thu Sep 30 11:18:11 GST 2010 

訪問 JavaBean 屬性

除了 **<jsp:useBean...>** 動作外,您還可以使用 **<jsp:getProperty/>** 動作訪問 get 方法,並使用 **<jsp:setProperty/>** 動作訪問 set 方法。以下是完整語法:

<jsp:useBean id = "id" class = "bean's class" scope = "bean's scope">
   <jsp:setProperty name = "bean's id" property = "property name"  
      value = "value"/>
   <jsp:getProperty name = "bean's id" property = "property name"/>
   ...........
</jsp:useBean>

**name** 屬性引用之前由 useBean 動作引入 JSP 的 JavaBean 的 id。**property** 屬性是應呼叫的 **get** 或 **set** 方法的名稱。

以下示例演示如何使用上述語法訪問資料:

<html>
   <head>
      <title>get and set properties Example</title>
   </head>
   
   <body>
      <jsp:useBean id = "students" class = "com.tutorialspoint.StudentsBean"> 
         <jsp:setProperty name = "students" property = "firstName" value = "Zara"/>
         <jsp:setProperty name = "students" property = "lastName" value = "Ali"/>
         <jsp:setProperty name = "students" property = "age" value = "10"/>
      </jsp:useBean>

      <p>Student First Name: 
         <jsp:getProperty name = "students" property = "firstName"/>
      </p>
      
      <p>Student Last Name: 
         <jsp:getProperty name = "students" property = "lastName"/>
      </p>
      
      <p>Student Age: 
         <jsp:getProperty name = "students" property = "age"/>
      </p>

   </body>
</html>

讓我們將 **StudentsBean.class** 可用於 CLASSPATH。訪問上述 JSP。將顯示以下結果:

Student First Name: Zara 

Student Last Name: Ali 

Student Age: 10 
廣告