JAVABean在Jsp中的作用範圍(page,request,session,application)

JavaBean是一種可複用,跨平臺的組件。共有兩種JavaBean:一種無用戶界面,這種一般用於處理數據運算,操作數據庫等。另一種是有用戶界面(User Interface)的JavaBean.   在Jsp中一般訪問無用戶界面的JavaBean。

       Jsp中訪問JavaBean語法:

1. 使用page指令導入 JavaBean 類:
    <%@page import="包名 . 類名" %>

2. 使用<jsp:useBean>標籤聲明JavaBean對象:
    <jsp:useBean id="實例名" class="包名 . 類名" scope="作用範圍"/>

注意:要給出完整的(包名 . 類名),否則報ClassNotFoundException
   
    例:<jsp:useBean id="bean" class="com.CountBean" scope="session"/>
    上面的代碼相當於:
                 CountBean bean = new CountBean();
             session.setAttribute( "bean" , bean );

注意:如果在scope指定範圍內,該JavaBean已存在,則<jap:useBean>不會生成新的JavaBean對象,而是直接獲得已經存在的 JavaBean 對象的引用.

3.使用<jsp:getProperty>和<jsp:setProerty>標籤訪問JavaBean屬性:

<jsp:getProperty name="實例名" property="Bean中的屬性名">
    調用Bean中的get方法得到某屬性的值

<jsp:setProperty name="實例名" property="Bean中的屬性名">
      調用Bean中的set方法給某屬性賦值

例子:
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@page import="com.CountBean;"%>
<jsp:useBean id="bean" class="
com.CountBean" scope="[page][request][session][application]" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>

   
    <title>Count.jsp'</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">

</head>

<body>
    count values is:<jsp:getProperty name="bean" property="num" />
    <jsp:setProperty name="bean" property="num" value="<%=bean.getNum()+1 %>"/>

    <%
   
        CountBean obj = null;
        String scope = null;
       
        obj = (CountBean)request.getAttribute("bean");
        if( obj != null ) scope = "request";
       
        obj = ( CountBean )session.getAttribute("
bean");
        if( obj != null ) scope = "session";
       
        obj = ( CountBean )application.getAttribute("
bean");
        if( obj != null ) scope = "application";
       
        if( scope == null ) scope = "page";
       
    %>
         <p> scope = <%=scope %> </p>
</body>
</html>

補充:
1.JavaBean在page作用域中:
    在這種情況下,客戶每次訪問Jsp頁面時,都會創建一個JavaBean對象,僅在當前Jsp頁面中有效。
    例子的結果:
                    count values is: 0
                    scope = page

    此時JavaBean在將以下兩種情況下結束生命週期
      (1)當客戶訪問當前Jsp頁面通過forword轉發請求到另一文件時
   
(2) 當客戶訪問當前Jsp頁面執行完畢並向客戶端發回響應時

2.JavaBean在request作用域中:
   
與pgae一樣,
客戶每次訪問Jsp頁面時,都會創建一個JavaBean對象。
   
例子的結果:
                    count values is: 0
                    scope = request
   此時
, 當客戶訪問當前Jsp頁面執行完畢並向客戶端發回響應時 ,JavaBean結束生命週期

3 JavaBean在session作用域中:
   
JavaBean對象被創建後,一直存在於當前回話中,在同一會話中,共享同一JavaBean
    例子結果:
                    count values is: 0
( 每刷新一次,增長1,當打開另一瀏覽器窗口重新發出請求時,就不在同一會話中了,將創建一個新的會話,從0開始重新增長。 )
                    scope = session

4.JavaBean在application作用域中
     JavaBean對象被創建後,一直存在於當前Web應用程序的生命週期中,在此應用程序中,共享同一JavaBean
例子結果:
                    count values is: 0
( 每刷新一次,增長1,當打開另一瀏覽器窗口重新發出請求時,此時還在同一Web應用程序中了,從原有基礎上增長。 )
                    scope = application

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章