隨筆 - 9, 文章 - 0, 評論 - 2, 引用 - 0
          數據加載中……

          在JSP文檔中共享bean

          <jsp:useBean...scope="page">

          這是默認的值;完全省略scope屬性也會得到相同的行為。page作用域表示:在處理當前請求期間,除了要將bean對象綁定到局部變量外,還應該將它放在PageContext對象中。將對象存儲在此處表示,servlet可以通過調用預定義變量pageContext的getAttribute方法訪問它。

          由于每個頁面和每個請求都有不同的PageContext對象,所以scope="page"表示不共享bean,也就是針對每個請求都創建新的bean。

          例如:下面有一個表單form.jsp是用來輸入用戶參數的

          <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
          <head>
          <title>表單</title>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          </head>

          <body>
          <form name="form1" method="post" action="test1.jsp">
          <table width="100%"  border="1">
            <tr>
              <td width="11%">用戶名:</td>
              <td width="89%"><input type="text" name="username"></td>
            </tr>
            <tr>
              <td>密碼:</td>
              <td><input type="password" name="password"></td>
            </tr>
            <tr>
              <td>年齡:</td>
              <td><input type="text" name="age"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input type="submit" name="Submit" value="測試"></td>
            </tr>
          </table>
          </form>
          <p>&nbsp;</p>
          </body>
          </html>


          一個JavaBean  userBean.java

          package struts.bean;

          public class userBean {
              private String username;
              private String password;
              private String age;
              public String getUsername() {
                  return username;
              }

              public String getPassword() {
                  return password;
              }

              public String getAge() {
                  return age;
              }

              public void setUsername(String username) {
                  this.username = username;
              }

              public void setPassword(String password) {
                  this.password = password;
              }

              public void setAge(String age) {
                  this.age = age;
              }
          }

          三個處理表單的test1.jsp test2.jsp test3.jsp,這三個處理的JSP代碼都一樣,只不過在test2.jsp中多了一個鏈接(測試3)。其他都一樣

          <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
          <%@ page import="mail.util.*"%>
          <jsp:useBean id="user" scope="page" class="struts.bean.userBean"/>
          <%
          String username=request.getParameter("username");
          String password=request.getParameter("password");
          String age=request.getParameter("age");

          user.setUsername(username);
          user.setPassword(password);
          user.setAge(age);
          %>
          <html>
          <head>
          <title>test1</title>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          </head>

          <body>
          <table width="100%"  border="1">
            <tr>
              <td width="10%">用戶名:</td>
              <td width="90%"><%=user.getUsername()%></td>
            </tr>
            <tr>
              <td>密碼:</td>
              <td><%=user.getPassword()%></td>
            </tr>
            <tr>
              <td>年齡:</td>
              <td><%=user.getAge()%></td>
            </tr>
          </table>
          <p><a href="test2.jsp">測試2</a></p>
          <p><a href="test3.jsp">測試3</a></p>
          </body>
          </html>

          注意:因為是在測試scope="page",所以上面這個<jsp:uesBean>為<jsp:useBean id="user" scope="page" class="struts.bean.userBean"/>

          測試的結果為:test2.jsp test3.jsp都沒有共享上面的三個參數。

          同樣,我們再來測試一下第二個結果,把scope="page"該為scope="request"時,結果跟上面的一樣,test2.jsp test3.jsp也得不到那三個參數的值,這是因為:

          <jsp:useBean...scope="request">

          這個值表示:在處理當前請求期間,除了要將bean對象綁定到局部變量外,還應該將它放在HttpServletResponse對象中,從而可以通過getAttribute方法訪問它。看起來這個作用域好象也產生非共享bean,但是,在使用jsp:include,jsp:forward,或者RequestDispatcher的include或forward方法時,兩個JSP頁面,或JSP頁面和servlet將會共享請求對象。


          現在我們把scope="page"該為scope="session",結果就跟上面的不一樣了,test2.jsp test3.jsp可以得到那三個參數的值,這是因為:

          <jsp:useBean...scope="session">

          這個值表示:除了要將bean幫定到局部變量以外,還要將它存儲到與當前請求關聯的HttpSession對象中,可以使用getAttribute獲取存儲在HttpSession中的對象。

          最后,把scope="page"該為scope="application",結果是,test2.jsp test3.jsp同樣可以得到那三個參數的值,這是因為:

          <jsp:useBean...scope="application">

          這個值表示:除了要將bean幫定到局部變量以外,還要將它存儲到與當前請求關聯的ServletContext對象中(通過預定義application變量或通過調用getServletContext獲得)。ServletContext有Web應該中多個servlet和JSP頁面所共享。可以使用getAttribute獲取存儲在ServletContext中的對象。





           

          posted on 2005-09-01 02:06 阿松 閱讀(378) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 武乡县| 精河县| 东阳市| 穆棱市| 台中市| 资源县| 静海县| 辉县市| 昌都县| 克东县| 鄄城县| 高要市| 伊金霍洛旗| 修水县| 永春县| 阳江市| 利川市| 儋州市| 嘉祥县| 阳原县| 遂川县| 新巴尔虎左旗| 乐清市| 甘南县| 吉隆县| 烟台市| 文安县| 钟祥市| 星子县| 奈曼旗| 宁陕县| 万安县| 大英县| 大同市| 平南县| 岗巴县| 高邑县| 伊金霍洛旗| 化州市| 孟村| 青龙|