cookie和session基礎知識學習(二)

筆者對於cookie和session也是初學,寫這篇文章的主要目的是方便自己去理解cookie和session的相關內容,所以有些描述並不是那麼專業和全面,請多多包涵。
在上篇文章cookie和session基礎知識學習(一)裏面介紹了有關會話技術的概念,以及cookie的一些基礎知識。這篇文章主要講的是關於session的一些基礎知識。

一、session的簡單使用

session是服務器端技術,服務器在運行時可以爲每一個用戶的瀏覽器創建一個獨享的session對象。
session的使用步驟:

  • 獲取session對象
  • 使用session存儲數據
  • 使用session獲取數據

注意session與cookie在使用時的差異,cookie是Cookie對象,而session是HttpSession對象;cookie對象由自己創建,而session對象是獲取對象(request.getSession()),而不用自己創建HttpSession對象。

下面是一個簡單的session案例,SessionTest1存儲數據,SessionTest2獲取數據。

SessionTest1:

package com.study.cookieandsessionstudy;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "SessionTest1", value = "/SessionTest1")
public class SessionTest1 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //獲取session
        HttpSession httpSession = request.getSession();

        //存儲數據
        httpSession.setAttribute("msg", "hello-world");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request, response);

    }
}

SessionTest2:

package com.study.cookieandsessionstudy;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "SessionTest2", value = "/SessionTest2")
public class SessionTest2 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //獲取session
        HttpSession httpSession = request.getSession();

        //獲取數據
        Object object = httpSession.getAttribute("msg");
        System.out.println(object);

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.doPost(request, response);

    }
}

二、session的使用原理

session不同於cookie,當用戶第一次訪問服務器時,服務器爲用戶創建專享的session對象,然後會把session對象的id以cookie形式返回給客戶端。針對這種情況cookie有專門的屬性JSESSIONID來存儲session的id。
這樣,當用戶保持當前瀏覽器的情況下再去訪問服務器時,根據傳過來的cookie所帶的JSESSIONID的值便可以找到其專屬session,然後便可完成相應的會話。
由此,session的實現依賴於cookie

在這裏插入圖片描述
2019.12.22

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