會話層技術-cookie

yzh先生發表於2024-10-20

會話層技術cookie的使用

cookie拿下!

package com.atguigu.servlet;

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

@WebServlet(name = "ServletA", urlPatterns = "/ServletA")
public class ServletA extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //servletA演示客戶端如何獲得cookie物件
        //使用者第一次發請求,servlet建立Cookie物件
        Cookie cookies1 = new Cookie("keya", "valuea");
        Cookie cookies2 = new Cookie("keyb", "valueb");

        //設定cookies1的存活時間
        //cookies1.setMaxAge(0);//0是請求生成後立即刪除,下次訪問沒有這個cookie
        //cookies1.setMaxAge(-1);//負值是儲存在瀏覽器中,只要開著,一直有
        //cookies1.setMaxAge(30);//正值是儲存在瀏覽器中有時間,若瀏覽器開著就到期結束,若關閉,再開啟沒到期的話還有
        //但是對於上述三種方法,一旦清楚瀏覽器快取,cookie將全部消失

        /*設定cookie的提交路徑
        表示cookies1只能提交給ServletB,就是客戶端發請求時,cookies1只能存在訪問ServletB的請求中,訪問其他的ServletA,
        請求中不會有cookies1
         */
        cookies1.setPath("/demo06/ServletB");
        
        //將Cookie物件放入響應物件中,響應給客戶端
        response.addCookie(cookies1);
        response.addCookie(cookies2);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
package com.atguigu.servlet;

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

@WebServlet(name = "ServletB", urlPatterns = "/ServletB")
public class ServletB extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //servletB演示如何在servelt中獲取某個客戶端已經攜帶的cookie
        Cookie[] cookies = request.getCookies();//注意獲取的時候,一般有多個cookie物件,需要用陣列儲存
        if (cookies != null) {
            for (Cookie a : cookies) {
                System.out.println("獲取到改該客戶端攜帶的cookie名為" + a.getName() + "=" + a.getValue());
            }
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

具體的講述都在上述程式碼中。

簡單談一下學習這個cookie技術後,對其的自我理解

  1. 最重要的是理解cookie是什麼,其簡單來說就是一張身份證,購物卡,學生證等類似的性質。會話就是談話的過程,會話層技術cookie把會話資料(像購物資料,身份資料,談話內容都可稱為會話內容)儲存下來。
  2. 此外,cookie是一個類,他只有一個構造方法,這個構造方法決定了它建立物件時,必須把cookie的名字和值定義好,名字就是你自己給你的學生證起個別名,值就是你學生證的資訊,差不多就是這個意思。
  3. 還有一點就是腦海中清楚cookie使用的過程以及為什麼要用cookie技術。如果不用cookie技術,使用者訪問資料無法儲存,使用cookie技術,可以讓瀏覽器知道是哪個使用者訪問我,從而做出響應。瀏覽器第一次訪問沒有cookie,伺服器會用servlet建立cookie物件,並把它返回給使用者,之後再訪問,伺服器的請求中就有身份證了。ok。
  4. 最後再普及一個知識:瀏覽器和伺服器的區別:
    • 瀏覽器:簡單理解為客戶端的一個應用程式即可,它讓使用者可以使用這個應用程式訪問網頁中各種內容。
    • 伺服器:其是一個機器(主機),包含了硬體裝置和軟體裝置,比如:一臺裝有tomcat軟體的電腦就是一個伺服器,tomcat是伺服器軟體(web伺服器),有各種協議。

相關文章