在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
- public class counter {
- //初始化Javabean的成員變量
- int count = 0;
- //屬性Count的Get方法
- public int getCount(){
- count++; //計數操作,每一次請求都進行計數+1
- return this.count;
- }
- //屬性count的set方法
- public void setCount(int count){
- this.count = count;
- }
- }
counter.jsp檔案
這個檔案顯示目前的屬性count的值,也就是計數器的值,這裡我們用out.println方法輸出。
[plain] view plain copy
- <%@ 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>Insert title here</title>
- </head>
- <body>
- <!-- 初始化counter這個Bean,執行個體為bean0 -->
- <jsp:useBean id="bean0" scope="application" class="cn.hanxd.neusoft.javabean.counter"/>
- <%out.println("The Counter is:" + bean0.getCount() + "<BR>"); %>
- </body>
- </html>
counter1.jsp檔案
這個檔案中我們用另一種方式來擷取count的屬性值。
[plain] view plain copy
- <%@ 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>Insert title here</title>
- </head>
- <body>
- <!-- 初始化counter這個Bean,執行個體為bean1 -->
- <jsp:useBean id="bean1" scope="application" class="cn.hanxd.neusoft.javabean.counter"/>
- The Counter is:<jsp:getProperty name="bean1" property="count"/><BR>
- </body>
- </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"/>
運作程式,多重新整理幾次,就可以看到計數器的變化了。