文档章节

Java cookie 是如何工作的,Session与cookie的区别

Oscarfff
 Oscarfff
发布于 2015/06/01 16:44
字数 456
阅读 80
收藏 2

一、Cookie 的作用

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

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

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

HttpServletRequest request

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

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

1.4 Tomcat 服务器如何添加Cookie

说明:

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

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

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

二、总结Session和cookie

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

三、Session 时序图

© 著作权归作者所有

Oscarfff
粉丝 73
博文 816
码字总数 97116
作品 0
崇明
后端工程师
私信 提问
关于网站跨语言要解决的问题

在解决网站跨语言的时候,有几个问题想不太明白: 1:session共享如何解决,貌似用cookie 代替 session 是是最直接的解决方案,但是如何实现呢? 我现在想到的方案是,在数据库端存储cookie的...

jing31
2010/08/02
728
21
Session和Cookies的区别

Cookie与Session都可以进行会话跟踪,但是实现的原理不太一样。一般情况下二者均可以满足需求,但有时候不可以使用Cookie,有时候不可以使用Session。下面通过比较说明二者的特点以及适用的场...

六六木木
2013/07/29
2.3K
13
【缓存--题外篇】session、cookie区别(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rsx/article/details/82961796 1 .存取方式的不同 Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者...

不专业得Cook-任晓帅
2018/10/21
0
0
Java个人知识点总结(基础篇)

基础篇 JDK常用的包  java.lang:这个是系统的基础类,比如String、Math、Integer、System和Thread, 提供常用功能。  java.io:这里面是所有输入输出有关的类,比如文件操作等  java.net:...

java架构
2018/11/08
0
0
2012 版猥琐获得 httponly cookie 权限教程

背景介绍 - 过去 第一次尝试获取到 HttpOnly cookie是通过XST (Cross Site Tracing:跨站跟踪)漏洞. 不久之后开始普及XST,再之后, 浏览器还在XMLHttpRequest中封锁了TRACE方法 (i.e. xmlhttp....

蟋蟀哥哥
2013/01/31
10.4K
17

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部