首頁 > Java > java教程 > 主體

JAVA怎麼透過Servlet操作JSP中Session變數

WBOY
發布: 2023-05-02 17:34:13
轉載
1157 人瀏覽過
#

用Servlet控制會話

  會話狀態的維持是開發Web應用所必須面對的問題,有多種方法可以來解決這個問題,如使用Cookies,hidden類型的表單域,或直接把狀態資訊加到URL中等,還有Servlet本身提供了一個HttpSession介面來支援會話狀態的維持,在這裡我們主要介紹基於這個介面的會話狀態的管理。

  Session的發明是為了填補HTTP協定的限制。請注意HTTP協定是如何運作的--使用者發出請求,伺服器作出回應,這種使用者端和伺服器端的聯繫就是離散的,非連續的。 HTTP協定不能提供允許伺服器追蹤使用者請求的功能。在伺服器端完成響應用戶的請求之後,伺服器無法繼續與該瀏覽器繼續保持連線。從伺服器這端來看,每個請求都是獨立的,因此HTTP協定被視為無狀態協議,當使用者在多個主頁間切換時,伺服器無法知道他的身分。 Session的出現就是為了彌補這個限制。利用Session,您就可以當一個使用者在多個主頁間切換的時候也能保存他的資訊。這樣很多以前根本無法去做的事情就變得簡單多了。

  在訪客從到達某個特定的主頁到離開為止的那段時間,每個訪客都會單獨獲得一個Session。
  Java Servlet定義了一個HttpSession接口,實現的Session的功能,在Servlet中使用Session的過程如下:
  
#  (1) 使用HttpServletRequest的getSession方法得到當前存在的session,如果當前存在的session,如果當前存在的session session,則建立一個新的session,也可以使用方法getSession(true)

  (2) 寫入session變數。可以使用方法HttpSession.setAttribute(name,value)來儲存一個資訊到Session。也可以使用HttpSession.putValue(name,value),但這個方法已經過時了。

  (3) 讀Session變數。可以使用方法HttpSession.getAttribute(name)來讀取Session中的一個變數值,如果name是沒有定義的變量,那麼回傳的是null。要注意的是,從getAttribute讀出的變數型別是Object,必須使用強制型別轉換,例如:
     String uid = (String) session.getAttribute("uid");
  也可以使用Htt (name),但是這個方法也已經過時了。

  (4) 關閉session,當時用完session後,可以使用session.invalidate()方法關閉session。但這並不是嚴格要求的。因為,Servlet引擎在一段時間之後,自動關閉seesion。

  下面舉一個簡單的例子說明session的使用
  // SessionExample.java
  import java.io.*;
  import java.util.*;##.io.*;
  import java.util.*;
 . servlet.*;
  import javax.servlet.http.*;
  //導入必要的軟體包
  public class SessionExample extends HttpServlet
 ppublic v. ponse response )
      throws IOException, ServletException //實作doGet方法
    {
     集); Writer out = response.getWriter(); //得到輸出Writer
      HttpSession session = request.getSession(true);
                                       //得到session物件

      //列印HTML標記

      out.println("");
     out.println("");
     out.println("");
     out.println("");
     out.println("");
     .println("");

      out.println("");

      out.println("");##     out.println("");##     ate created = new Date(session.getCreationTime());
                  ///ses 所建立的時間點      ///ses 所建立的時間##""""""""""""n, 完成的程式碼。」00,000) 得到的時間#dID 完成物件。 ));
                  //得到最後訪問該session物件的時間
      out.println("ID " session.getId() " ");
                     /        out.println("Created: " created " ");
//列印session建立時間
      out.println("Last Accessed: " accessed " ");
                  

      session.setAttribute("UID","12345678");
                   2         245         245   38 ##      session.setAttribute("Name","Tom");
                               在session中加入變數Name=Tom

      Enumeration e = session.getAttributeNames();
       總變數中得到的舉名    比
      while (e.hasMoreElements() ) { //遍歷每一個變數
        String //首先得到名字
        String ue = session.        //由名字從session中得到值
        out .println(name " = " value " "); //印出
      }
      out.println(""); //HTML]
#  out.println(""); //HTML]
」標記   }
    }
  }

以上是JAVA怎麼透過Servlet操作JSP中Session變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板