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 时序图

相关文章
相关标签/搜索