Session的發明是為了填補HTTP協定的限制。請注意HTTP協定是如何運作的--使用者發出請求,伺服器作出回應,這種使用者端和伺服器97色色端的聯繫就是離散的,非連續的。 HTTP協定不能提供允許伺服器追蹤使用者請求的功能。在伺服器端完成響應用戶的請求之後,伺服器無法繼續與該瀏覽器繼續保持連線。從伺服器這端來看,每個請求都是獨立的,因此HTTP協定被視為無狀態協議,當使用者在多個主頁間切換時,伺服器無法知道他的身分。 Session的出現就是為了彌補這個限制。利用Session,您就可以當一個使用者在多個主頁間切換的時候也能保存他的資訊。這樣很多以前根本無法去做的事情就變得簡單多了。
在訪客從到達某個特定的主頁到離開為止的那段時間,每個訪客都會單獨獲得一個Session。
Java Servlet定義了一個HttpSession接口,實現的Session的功能,在Servlet中使用Session的過程如下:
(1) 使用HttpServletRequest的getSession方法得到當前存在的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");
也可以使用HttpSession.getValue (name),但是這個方法也已經過時了。
(4) 關閉session,當時用完session後,可以使用session.invalidate()方法關閉session。但這並不是嚴格要求的。因為,Servlet引擎在一段時間之後,自動關閉seesion。
下面舉一個簡單的例子說明session的使用
//97色色SessionExample.java
import java.io.*;
import java.util.*;
import javax.servlet .*;
import javax.servlet.http.*;
//導入必要的軟體包
public class SessionExample extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse doGet(HttpServletRequest request, HttpServletResponse doGet(HttpServletRequest request, HttpServletResponse doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException //實作doGet方法
{
response.setContentType("text/html"); //設定HTTP頭
PrintWriter out = response.getWriter(); //得到輸出97gan
HttpSession session = request.getSession(true);
//得到session物件
//列印HTML標記
out.println("");
out .println("
以上是JAVA中Session的會話狀態如何實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!