JSP JavaBean使用

JavaBean是一種專門構建的Java類,它使用Java編寫,並根據JavaBeans API規範進行編碼。

以下是將JavaBean與其他Java類有區別的獨特特徵 -

  • 它提供了一個默認的,無參數的構造函數。
  • 它應該是可序列化的,可以實現Serializable接口。
  • 它可能有許多可以讀取或寫入的屬性。
  • 它可能有一些gettersetter方法的屬性。

JavaBeans屬性

JavaBean屬性是可由對象的用戶訪問的命名屬性。該屬性可以是任何Java數據類型,包括定義的類。
JavaBean屬性可能被讀取,寫入,只讀或只寫。JavaBean屬性通過JavaBean實現類中的兩種方法進行訪問 -

編號

方法

描述

1

getPropertyName()

例如,如果PropertyNamefirstName,那麼方法名稱將是getFirstName(),它用來來讀取該屬性的值。這種方法稱爲訪問器。

2

setPropertyName()

例如,如果PropertyName名稱是firstName,那麼方法名稱將爲setFirstName()來寫入該屬性的值。這種方法叫賦值函數。

只讀屬性將只有一個getPropertyName()方法,只寫屬性將只有一個setPropertyName()方法。

JavaBeans示例

爲了更好地演示如何使用JavaBean,我們打開Eclipse,創建一個動態Web項目:JavaBean,其項目結構如下所示 -

JSP

考慮一個擁有幾個屬性的學生(Student)類 -

文件:Student.java

package com.yiibai;

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

    public String getName() {
        return name;
    }

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

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public int getAge() {
        return age;
    }

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

}

訪問JavaBeans

useBean動作聲明一個用於JSP的JavaBean。當聲明瞭之後,該bean就成爲腳本變量,可以由腳本元素和JSP中使用的其他自定義標籤訪問。useBean標籤的完整語法如下 -

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

這裏,scope屬性的值可以是page, request, sessionapplicationid屬性的值可以是任何值,只要它是同一個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 20 13:18:11 GST 2017

訪問JavaBeans屬性

<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中的JavaBeanid。屬性是應該調用的getset方法的名稱。

以下示例顯示如何使用上述語法訪問數據。

文件:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP+JavaBean</title>
</head>
<body>

    <div style="margin:auto; width: 90%">
        <!-- 設置學生信息 -->
        <jsp:useBean id="student" class="com.yiibai.Student">
            <jsp:setProperty name="student" property="name" value="蘇小牛" />
            <jsp:setProperty name="student" property="from" value="Haikou" />
            <jsp:setProperty name="student" property="age" value="25" />
        </jsp:useBean>

        <p>
            學生姓名:
            <jsp:getProperty name="student" property="name" />
        </p>

        <p>
            所在地:
            <jsp:getProperty name="student" property="from" />
        </p>

        <p>
            年齡:
            <jsp:getProperty name="student" property="age" />
        </p>
    </div>

</body>
</html>

在編寫完成上面示例代碼後,運行項目並打開瀏覽器訪問URL:http://localhost:8080/JavaBean/index.jsp , 得到以下結果 -

JSP