天天看點

JSP與JavaBean的結合

在JSP中調用JavaBean有三個标準的标簽可以用,它們分别是<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>。

1、<jsp:useBean>标簽

這個标簽定義一個具有唯一的id的JavaBean的執行個體,這個執行個體還具有一定的生存範圍,JSP通過id來識别JavaBean,也可以通過id.的方式操作JavaBean,它的寫法是<jsp:useBean id="" scope="" class=""/>,一般就這三個比較重要。

<jsp:useBean>标簽有五個屬性

(1)Id:id屬性是JavaBean對象的唯一标志,代表了一個JavaBean的對象執行個體。它具有特定的存在範圍(也就是另一個屬性scope)。在JSP中通過id來識别JavaBean

(2)Scope:scope屬性代表了JavaBean對象的生存範圍,他有四個值可選,分别是page,request,session和application,但隻能選一個。

(3)Class:class代表了JavaBean對象的class名字,說白了就是JavaBean對象在哪個類中,要寫全報名.類名

(4)BeanName:BeanName屬性代表了bean的名字,通常通過java.beans.Beans class的instantiate()方法來初始化

(5)Type:type屬性指定了腳本變量定義的類型,預設的定義和class中的屬性一緻,一般情況下我們都采用預設值

2、<jsp:setProperty>

這個标簽主要用于設定bean的屬性值,它的寫法是這樣的<jsp:setProperty name="beanName" property=""/>,這裡面name屬性代表了已經存在的并且具有生存範圍的JavaBean執行個體。

<jsp:setProperty>标簽有四個屬性

(1)Name:代表<jsp:useBean>标簽定義的JavaBean對象的執行個體。

(2)Property:這個屬性很重要,代表你想設定值的屬性property名字,并比對JavaBean中相同名字的屬性property,并通過JavaBean中屬性的set方法指派value給這個屬性。如果value屬性為空,則不會修改JavaBean中的屬性值。

(3)Param:param屬性代表了頁面請求的參數名字,<jsp:setProperty>标簽不能同時使用param和value。

(4)Value:Value屬性代表了賦給Bean的屬性property的具體值。

3、<jsp:getProperty>标簽

這個标簽可以得到JavaBean執行個體的屬性值,并将它們轉換成String類型,最後放置在隐含的Out對象中,JavaBean的執行個體必須在<jsp:getProperty>前面定義。它的寫法是這樣的<jsp:getProperty name="" property="">

<jsp:getProperty>标簽有兩個屬性

(1)Name: name手續甯代表了想要獲得屬性值得Bean的執行個體,Bean的執行個體必須在前面用<jsp:useBean>标簽定義。

(2)Property:Property屬性代表了想要獲得值得哪個property的名字

我們來看一個執行個體,這是一個計數器程式的執行個體。

這個執行個體中包含3個檔案:JavaBean檔案counter.java,JSP檔案counter.jsp和counter1jsp,其中counter.java主要是用來進行計數器的計數操作,counter.jsp和counter1.jsp檔案主要用來顯示網頁的計數。

counter.java檔案

[java]  view plain  copy

  1. public class counter {  
  2.     //初始化Javabean的成員變量  
  3.     int count = 0;  
  4.     //屬性Count的Get方法  
  5.     public int getCount(){  
  6.         count++;    //計數操作,每一次請求都進行計數+1  
  7.         return this.count;  
  8.     }  
  9.     //屬性count的set方法  
  10.     public void setCount(int count){  
  11.         this.count = count;  
  12.     }  
  13. }  

counter.jsp檔案

這個檔案顯示目前的屬性count的值,也就是計數器的值,這裡我們用out.println方法輸出。
[plain]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. <!-- 初始化counter這個Bean,執行個體為bean0 -->  
  11. <jsp:useBean id="bean0" scope="application" class="cn.hanxd.neusoft.javabean.counter"/>  
  12. <%out.println("The Counter is:" + bean0.getCount() + "<BR>"); %>  
  13. </body>  
  14. </html>  

counter1.jsp檔案

這個檔案中我們用另一種方式來擷取count的屬性值。

[plain]  view plain  copy

  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. <!-- 初始化counter這個Bean,執行個體為bean1 -->  
  11. <jsp:useBean id="bean1" scope="application" class="cn.hanxd.neusoft.javabean.counter"/>  
  12. The Counter is:<jsp:getProperty name="bean1" property="count"/><BR>  
  13. </body>  
  14. </html>  

總結:

從上面的例子我們可以看到,JSP和JavaBean應用的一般操作方法是這樣的:首先呢,先在JSP頁面中聲明并初始化JavaBean,這個JavaBean有一個唯一的id标志,還有一個生存範圍scope(這裡設定為application,這是因為我們需要多個使用者共享一個計數器功能,如果想要單個使用者的計數功能可以将scope改為session),最後還要定制JavaBean的class來源,即包名.類名<jsp:useBean id=""  scope="application" class="包名.類名"。接下來我們就可以使用JavaBean提供的public方法或者直接使用<jsp:getProperty>标簽來得到JavaBean中屬性的值:bean0.getCount()或者<jsp:getProperty name="bean0" property="count"/>

運作程式,多重新整理幾次,就可以看到計數器的變化了。