歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

淺析JavaBean

閱讀目錄

  • 一、概述
  • 二、什麼是JavaBean?
  • 三、JavaBean的使用

一、概述

  JavaBean組件本質上是一個Java類,只是這個類的編碼要遵循一些約定。用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。本文將對JavaBean涉及的知識點和基本用法進行簡單的總結。

二、什麼是JavaBean?

  JavaBean 是一種JAVA語言寫成的可重用組件,本質上是一個類,具有以下特性:

  • 它是一個public類型的類,屬性則為private類型的,通過public的方法暴露給其它程序
  • 必須具有一個無參的構造函數
  • 提供setXXX()方法和getXXX()方法讓外部程序設置和獲取JavaBean屬性

  一個JavaBean主要由三個部分組成:

  1. 屬性:是JavaBean組件內部狀態的抽象表示
  2. 方法:就是通常的Java方法,默認情況下所有的方法都可以被外部調用
  3. 事件:Bean與其他軟件組織交流信息的主要方式是發送和接收事件

  下面代碼為一個典型的JavaBean:

package com.test;

public class Person
{
    private String name="aaa";
    private int age;
    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;
    }
    
}

  JavaBean可以看成是一個黑盒子,即只需要知道其功能而不必管其內部結構的軟件設備。黑盒子只介紹和定義其外部特征和與其他部分的接口,如按鈕、窗口、顏色、形狀、句柄等。通過將系統看成使用黑盒子關聯起來的通訊網絡,我們可以忽略黑盒子內部的系統細節,從而有效地控制系統的整體性能。

三、JavaBean的使用

  在JSP中可以像使用普通類一樣訪問JavaBean,在腳本元素中實例化類的對象,調用對象的方法,並提供了三個動作元素來訪問JavaBean。

  <jsp:useBean>:用於實例化JavaBean或者定位一個已經存在的JavaBean,並把實例的引用賦值給一個變量。

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>在此處插入標題</title>
    </head>
    <body>
        <jsp:useBean id="person" class="com.test.Person" scope="page"/>
        <%=person.getName() %>
    </body>
</html>

  <jsp:setProperty>:和<jsp:userBean>一起使用用來設置JavaBean的屬性。

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>在此處插入標題</title>
    </head>
    <body>
        <!-- userbean標簽的標簽提只在userbean標簽實例化bean時使用-->
        <jsp:useBean id="person" class="com.test.Person" scope="page"/>
        
        <jsp:setProperty property="name" name="person" value="xujian"/>
        <%=person.getName() %>
    </body>
</html>

  還可以通過param指定請求對象中參數的名字:

<jsp:setProperty property="name" name="person" param="name"/>

  在浏覽器中輸入http://localhost:8080/day_0623/1.jsp?name=songji,頁面會顯示屬性name的值:songji。

  <jsp:getProperty>:用來訪問一個Bean的屬性,並把屬性的值轉化成一個String,然後發送到輸出流中

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>在此處插入標題</title>
    </head>
    <body>
        <!-- userbean標簽的標簽提只在userbean標簽實例化bean時使用-->
        <jsp:useBean id="person" class="com.test.Person" scope="page"/>
        
        <jsp:setProperty property="name" name="person" value="wangjian"/>
        
        <jsp:getProperty property="name" name="person"/>
    </body>
</html>

  查看jsp轉化的Servlet文件(文件目錄:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\work\Catalina\localhost\day_0623\org\apache\jsp)

 com.test.Person person = null;
      synchronized (_jspx_page_context) {
        person = (com.test.Person) _jspx_page_context.getAttribute("person", PageContext.PAGE_SCOPE);
        if (person == null){
          person = new com.test.Person();
          _jspx_page_context.setAttribute("person", person, PageContext.PAGE_SCOPE);
        }
      }
      out.write("\r\n");
      out.write("\t\t\r\n");
      out.write("\t\t");
      org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "name", "wangjian", null, null, false);
      out.write("\r\n");
      out.write("\t\t\r\n");
      out.write("\t\t");
      out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((com.test.Person)_jspx_page_context.findAttribute("person")).getName())));
      out.write("\r\n");
      out.write("\t</body>\r\n");

  可以看到,<jsp:getProperty property="name" name="person"/>這是轉換成上述代碼紅字體部分,調用了Person類的getName方法,如果該屬性沒有定義該方法則會報錯。

Copyright © Linux教程網 All Rights Reserved