JavaBean技術

   引言:html

JavaBeans與通常Java類的編寫相似.
在JSP頁面中要使用JavaBeans,只要在JSP頁面中使用JavaBeans的操做標記就能夠了。
JavaBeans的編寫和使用很是簡單,下面舉例說明。
   本講內容:
1.JavaBeans的編寫規範
2.在JSP中使用JavaBeans的操做標記
1、JavaBeans的編寫規範

1.  JavaBeans的編寫要求java

JavaBeans也是一個Java類,但在定義JavaBeans時通常要遵照下面的要求:
  • nJavaBeans必須是一個公共類(public),即在類定義的前面必定要加訪問修飾符public;
  • nJavaBeans必須有一個公共的(public)、不帶參數的構造函數。由於構造函數能夠重載,因此也能夠有其餘帶參數的構造函數;
  • nJavaBeans通常都屬性,這些屬性是以類中數據成員的方式定義的,這些屬性都是私有的(private),僅能經過一組共有的成員方法對其進行操做。
  • 設置屬性的方法名要用setXXX();取得屬性的方法名要用getXXX()。

2.  一個簡單的JavaBeans實例web

下面是一個簡單的JavaBeans,該JavaBeans只定義了一個字符串屬性。
實例10-1:一個簡單的JavaBeans程序(HelloBean.java)

01: package myBean;瀏覽器

02: import java.io.*;服務器

03: public class  HelloBeansession

04: {app

05:   //定義屬性webapp

06:   private String name="Hello Bean";jsp

07:   //定義無參的構造函數函數

08:   public HelloBean(){}

09:   //定義獲取屬性的getXXX方法

10:   public String getName()

11:   {

12:   return name;

13:   }

14:   //定義設置屬性的setXXX方法

15:   public void setName(String  str)

16:   {

17:   name=str;

18:   }

19:         public static void main(String[] args)

20:   {

21:   System.out.println("Example JavaBeans");

22:   }

23: }

  • 該實例已經在代碼的註釋中進行了說明。
  • 因爲該實例有main()主函數(通常JavaBeans不須要定義main()函數,因它是提供服務的程序,由其它的程序來調用它),因此在編譯後,能夠在DOS環境下執行,執行結果爲Example JavaBeans。

3.  在JSP中使用JavaBeans

  • 在JSP中使用JavaBeans,首先要在Tomcat Web服務器中部署已經編譯好的JavaBeans。
  • 在TOMCAT_HOME\webapps\jsp\WEB-INF\classes目錄下建立myBean文件夾(這是爲了與實例10-1第01行所定義的包名myBean相對應),而後將編譯好的字節代碼文件複製到該目錄中。
下面是一個使用實例10-1 JavaBeans的實例。
實例10-2:使用JavaBeans的實例程序(useHelloBean.jsp)

01: <%@page contentType="text/html;charset=GBK"%>

02: <HTML>

03: <HEAD><TITLE>使用JavaBeans</TITLE>

04: </HEAD>

05: <BODY>

06: <H2>該實例說明了在一個JSP中如何使用JavaBeans的屬性</H2>

07: <HR>

08:<jsp:useBean id="myBean" class="myBean.HelloBean" scope="application"/>

09: 調用setProperty前name屬性的值是:

10: <jsp:getProperty name="myBean" property="name" />

11: <P>

12: <jsp:setProperty name="myBean" property="name" value="Hello World"/>

13: 調用setProperty後name屬性的值是:

14: <jsp:getProperty name="myBean" property="name" />

15: </BODY>

16: </HTML>

 

  • 將實例10-2複製到TOMCAT_HOME\webapps\jsp目錄下,而後在地址欄輸入http://localhost:8080/jsp/useHelloBean.jsp,則瀏覽器窗口顯示如圖10-1所示的內容。
  • 實例10-2的08行<jsp:useBean…>是說明在該程序要使用一個類名爲myBean.HelloBean的JavaBeans,第10行是取得屬性名爲name的值,第12行是將屬性name的值設置爲「Hello World」,第14行取得從新設置後屬性name的值。
 
 
2、在JSP中使用JavaBeans的操做標記
  • 在前面介紹過,JSP操做是爲了使客戶機或服務器實現某種操做而下達的指令。
  • JSP有七個操做標記,即jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward、jsp:param和jsp:plugin。其中的jsp:include、jsp:forward、jsp:param和jsp:plugin已經介紹過,下面介紹jsp:useBean、jsp:setProperty和jsp:getProperty三個操做的功能和使用方法。

1.  jsp:useBean操做

該操做表示在JSP頁面中要使用JavaBeans,它的經常使用語法格式以下:

  <jsp:useBean id=「beanName」 

                            scope="page|request|session|application「

                            class="package.class"

     />

其中,id爲JavaBeans在該JSP頁面中的名稱,即JSP頁面的設計者所起的在JSP頁面中標識該JavaBeans的名稱,它的意思就是將一個JavaBeans對象與一個id定義的變量相關聯。
 
scope定義該JavaBeans對象的有效使用範圍,它能夠取如下4個值中的任一個:
  • page:表示這個JavaBeans在該JSP頁面文件及此文件中的全部靜態包含文件中有效(<%@ include file=…>)。
  • request:表示這個JavaBeans在該頁面發出的請求中有效。
  • session:表示這個JavaBeans將做爲一個對象綁定於session會話中,即在客戶機與服務器的一個會話期內有效。
  • application:表示這個JavaBeans將作爲一個對象綁定於application中,在本應用中有效。
                scope缺省的值page,代表此JavaBeans只能應用於當前頁。
                經過定義scope屬性,可使此JavaBeans不僅在當前頁面有效。
                class說明存儲JavaBeans的字節代碼文件名(.class)。
注意:若是在JavaBeans中定義了包(package),則這裏要指出整個包名。實例10-2的08行就是使用jsp:useBean操做建立了一個myBean.HelloBean類的實例,該實例在JSP頁面中的名稱爲「myBean」。

2.  jsp:setproperty操做

n當在JSP中建立了JavaBeans對象以後,就能夠經過jsp:setproperty操做標記設置JavaBeans的屬性值。
n其經常使用語法以下:

  <jsp:setProperty name="beanName " 

                                             property="propertyName" 

                                             value="propertyValue「

               />

其中,name表示jsp:useBean操做中定義的id名稱,property表示JavaBeans中定義的某個屬性,該屬性要設置一個值,value表示爲該屬性將要設置的新值。
在上面的格式中,jsp:setproperty操做標記用在jsp:useBean操做以後,這種狀況下,此jsp:setProperty操做無論是新的JavaBeans實例仍是原有的JavaBeans對象,都會執行。jsp:useBean操做還能夠用在jsp:useBean實體以內,表示以下:

<jsp:useBean id="beanName " ... >

..

<jsp:setProperty name=" beanName " property=" propertyName"  value="propertyValue" />

</jsp:useBean>

這種狀況下,此操做只在一個新的JavaBeans對象產生時才執行。
注意:jsp:setProperty操做必須使用在jsp:useBean操做以後。

3.  jsp:getProperty操做

jsp:getProperty操做取得JavaBeans屬性的值,並將其轉換成字符串值,最後插入到輸出結果中。
如實例10-2中第10行和14行。它的經常使用語法格式以下:

<jsp:getProperty name="beanName "  property="propertyName" />

其中,name表示經過jsp:useBean獲得的此JavaBeans在JSP頁面中的名字,property表示要取出其值並插入JSP頁面中的屬性名。
出處:http://wenku.baidu.com/view/be43723e25c52cc58bd6be93.html

================================================================

如下代碼是我根據上面的說明,寫的簡單的測試:

方式一:

package Java.Bean;

import java.util.Date;
import java.text.*;
public class Test1 {
    public Test1(){}
    public String say()
    {
        String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        return " Welcome! Now :"+time; 
    }
}
--------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="Java.Bean.*"%>
<html>
<body>
<h1>Hi <%= new Java.Bean.Test1().say()%></h1> 
</body>
</html>

方式二:

package mybean;

public class Test1 {
    public Test1(){}
    public String say()
    {
        return " Welcome Java Bean."; 
    }
}
--------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="my" scope="request" class="mybean.Test1"></jsp:useBean>
<html>
<body>
<h1>Hi <%=my.say()%></h1> 
</body>
</html>
相關文章
相關標籤/搜索