java cookies与session_Java cookie 是如何工作的,Session与cookie的区别

一、Cookie 的作用

cookie 主要是用于当用户通过HTTP访问服务器时候,这个服务器会将一些KEY/VALUE键值返回给客户端浏览器,并且给这个数据加上一些条件,在条件符合的时候这个用户下次访问服务器的时候,数据将会被带回服务器。

当前cookie 有两个版本,每个版本的内容如下:

1.1 cookie 0

c2525c68274421f1146cae58895ee482.png

1.2 cookie 1

290e0c99d9fa07f2d0ac38af4d999a92.png

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 包,

HttpServletRequest request

然后通过request.getcookies()方法获得cookie数组。

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

1.4 Tomcat 服务器如何添加Cookie

6d6cbd701ae852a4724666147fb031c7.png

说明:

真正构建Cookie 是在容器中, 通过Tomcat 里面的org.apache.catlina.connector.Response类 完成的。

另外,注意Cookie 里面的中文要URLEndcoder编码。

每添加一个Cookie 将会生成一个MimeHeader 对象。

二、总结Session和cookie

session 是依赖于cookie的。最终Sessionid 还是会存在cookie里面,所以如果cookie被用户禁用了,可能登录网站就会有问题。

三、Session 时序图

70799970758137085b7d69250287e1a2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值