天天看點

Java--javaweb的cookie和session的差別和代碼執行個體一、cookie和session

Java--javaweb的cookie和session的差別和代碼執行個體

  • 一、cookie和session
    • 1. cookie
      • 1.1.cookie的作用
      • 1.2.執行個體代碼
    • 2.session
      • 2.1.含義
      • 2.2.執行個體代碼

一、cookie和session

1. cookie

1.1.cookie的作用

cookies是用戶端請求浏覽器攜帶的一個資訊,相當于門票一樣。

一個浏覽器的cookies是否有上線

1.一個cookies隻能儲存一個資訊

2.一個web站點可以給一個浏覽器發送多個cookies,最多存放20個cookies

3.cookies的大小有限制4kb

4.浏覽器上限300個cookies

cookie的有效期設定:

1.不設定有效期,關閉浏覽器,自動失效

2.設定浏覽器的cookies 的有效期為0

1.伺服器會給一個使用者建立一個Session

2.一個Seesion獨占一個浏覽器,隻要浏覽器沒有關閉,則這個Seesion會一直存在

3.使用者登入之後,整個網站它都可以通路,儲存使用者的資訊

1.2.執行個體代碼

package com.zhenwe.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

//儲存使用者上一次儲存的時間
public class ServeletCookieSession extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //伺服器把用戶端通路就儲存為一個cookie
        //解決亂碼問題
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //擷取一個輸出的執行個體
        PrintWriter out=resp.getWriter();
        //從用戶端請求擷取cookies
        Cookie[] cookies=req.getCookies();//從這裡擷取數組,說明cookies可能有多個
        //判斷Cookies是否存在
        if (cookies!=null){
            out.print("你上次通路的時間為:");
            //通路時攜帶cookies與浏覽器存在的cookie進行比對
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie=cookies[i];
              if (cookie.getName().equals("lastLoginTime")){
               //如果存在cookies,則擷取cookies中的key 值,将擷取的key值轉換為時間類型顯示
                  long lastLoginTime=Long.parseLong(cookie.getValue());
                  Date date=new Date(lastLoginTime);
                  //輸出時間類型展示
                  out.print(date.toLocaleString());
                }
            }
        }else{
            out.print("這是您第一次通路");
        }
        //服務端從用戶端響應一個cookies
        Cookie cookie=new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
           

程式在運作過程中調用的方法

1.Cookie[] cookies=req.getCookies();//擷取請求中所有的cookies

2.cookie.getName()//擷取cookies的key

3.cookie.getValue()//擷取cookies的值

4.Cookie cookie=new Cookie(“lastLoginTime”,System.currentTimeMillis()+"");//建立一個cookies,存放key值

5.cookie.setMaxAge(246060);//設定cookie的有效期,這裡機關為分鐘

6.resp.addCookie(cookie);//響應給用戶端一個cookies

2.session

2.1.含義

session 是由伺服器自己建立,用來辨別體的使用者,這個機制相當于購物車,記錄用戶端通路的記錄資訊,一個使用者整個網站中經常會使用的資料,都會儲存在session中,當客戶再次通路伺服器時,可以使用這個session,避免資源的浪費。

設定session的有效期方法:

1.手動登出(比較高效)

HttpSession session=req.getSession();

session.removeAttribute(“name”);

//手動登出session

session.invalidate();

2.在web.xml中 設定session的過期時間

<session-config>
            <!--15分鐘後session自動失效-->
              <session-timeout>1</session-timeout>
          </session-config>
          <description>
           

2.2.執行個體代碼

package com.zhenwei.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class SessionDemio  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解決亂碼問題
        resp.setCharacterEncoding("utf-8");
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //從請求中得到Seesion
        HttpSession Session=req.getSession();
        //給Session中存東西
        Session.setAttribute("name","振威");
        //擷取Session的key值
        String SessionID=Session.getId();
        //判斷Session是否建立成功
        if (Session.isNew()){
            resp.getWriter().write("Session已經建立成功,ID"+SessionID);
        }
        else  resp.getWriter().write("Session未建立成功,ID");
        //session在建立的時候做了什麼事
        Cookie cookie=new Cookie("HGFIKJ",SessionID);
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
}