Java cookie 是如何工做的,Session與cookie的區別

1、Cookie 的做用

        cookie 主要是用於當用戶經過HTTP訪問服務器時候,這個服務器會將一些KEY/VALUE鍵值返回給客戶端瀏覽器,而且給這個數據加上一些條件,在條件符合的時候這個用戶下次訪問服務器的時候,數據將會被帶回服務器。
java

       當前cookie 有兩個版本,每一個版本的內容以下:
web

1.1 cookie 0


1.2 cookie 1

1.3 首先看一下,如何是獲取到cookie 

package com.yuan.test;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestCookie {
	@RequestMapping(value = "/login.do")
	public void CheckCookie(HttpServletRequest request,
			HttpServletResponse response) {
		Cookie[] cookies = request.getCookies();//獲取到cookie 數組
		String usernameString = getCookies("username", cookies);
		String userageString = getCookies("userage", cookies);
		if (null == usernameString) {

			response.addCookie(new Cookie("username", "oscar"));
		}
		if (null == userageString) {

			response.addCookie(new Cookie("userage", "28"));
		}
		response.getHeader("Set-Cookie");
	}

	public String getCookies(String key, Cookie[] cookies) {
		if (cookies != null) {
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals(key)) {
					return cookie.getValue();
				}

			}

		}
		return null;

	}
}

         根據代碼能夠看出,Cookie 是一個抽象的類,要想得到客戶端返回的Cookie必需要引入 javax.servlet 的 jar 包,spring

HttpServletRequest request

而後經過request.getcookies()方法得到cookie數組。apache

javax.servlet.http.Cookie[] cookies=request.getCookies();

1.4 Tomcat 服務器如何添加Cookie

說明:數組

真正構建Cookie 是在容器中, 經過Tomcat 裏面的org.apache.catlina.connector.Response類 完成的。瀏覽器

另外,注意Cookie 裏面的中文要URLEndcoder編碼。服務器

每添加一個Cookie 將會生成一個MimeHeader 對象。cookie

2、總結Session和cookie

session 是依賴於cookie的。最終Sessionid 仍是會存在cookie裏面,因此若是cookie被用戶禁用了,可能登陸網站就會有問題。session

3、Session 時序圖

相關文章
相關標籤/搜索