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