java web Cookie浅谈
1.会话控制
> Http协议
Http协议两个缺陷:
1.HTTP协议是纯文本的
2.HTTP协议是无状态的
服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户
虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。
[1] Cookie
> 看电影
- 去电影院看电影时,检票人员是认票不认人。
- 电影院的运作流程
1.印刷电影票
2.将票发给看电影
3.看电影的拿着票来看电影
4.检票
> 简介
- 我们想可以通过服务器向浏览器发送一个类似票的东西,
浏览器在访问服务器时就可以拿着票来访问
服务器就可以根据这个票来识别不同的用户。
- 服务器发送给浏览器的这张票我们称为Cookie。
- Cookie的使用流程:
1.服务器先要创建Cookie
2.将Cookie发送给浏览器
3.浏览器带着Cookie访问服务器
4.服务器检查浏览器的Cookie
- Cookie实际上就是一个头
服务器通过响应头将Cookie发送给浏览器,
浏览器通过请求头将Cookie发回给服务器,
服务器可以根据不同的Cookie来识别不同的用户。
> 使用Cookie
- 创建Cookie
Cookie cookie = new Cookie(name,value);
- 发送Cookie
response.addCookie(cookie);
注意:可以发送多个cookie!
- 读取Cookie
request.getCookies(); 返回的是一个Cookie数组。
- 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。
我们要想读取Cookie的信息,只能通过遍历数组。
- 修改Cookie
一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,
但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改
> Cookie的有效时间
- Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。
- 通过setMaxAge(秒数)来设置Cookie的有效时间
-//当秒数大于0时,有效时间会设置为相应的秒数
cookie.setMaxAge(30);
//当秒数等于0时,代表Cookie立即失效,浏览器不会保存。
cookie.setMaxAge(0);
//当秒数小于0时,和不设置是一样,一次会话中有效
cookie.setMaxAge(-100);
- 设置一个长久有效的Cookie
cookie.setMaxAge(60*60*24*365*10)
- 在程序中使Cookie立即失效
- 可以使用一个同名的,立即失效的Cookie来替换已有Cookie
注意:不建议在cookie中传递中文,会用base64编码!
> Cookie的Path
- path指的Cookie的路径
- 所谓的Cookie路径就是指,浏览器在访问哪些地址时会携带Cookie。
- Cookie默认有效路径是项目的根目录,只要访问当前项目下的资源就会带着Cookie
- 通过setPath()方法来设置Cookie有效路径
//修改Cookie的有效路径
//Cookie的路径由浏览器解析,所以设置路径时需要加上项目名
cookie.setPath(request.getContextPath()+"/hello");
> 应用:
1.可以用来保持用户的登录状态
2.可以用来记录用户上次输入的用户名
3.广告的推送
java web Cookie浅谈的更多相关文章
- Java web Cookie详解(持久化+原理详解+共享问题+设置中文+发送多个Cookie)
Java web Cookie详解 啥是cookie? 查询有道词典得: web和饼干有啥关系? 这个谜底等等来为大家揭晓 会话技术 web中的会话技术类似于生活中两个人聊天,不过web中的会话指的是 ...
- java反射机制浅谈
一.Java的反射机制浅谈 最近研究java研究得很给力,主要以看博文为学习方式.以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出.受到各位指教之处,如若让小生好好感动, ...
- 求高手帮忙解决一下问题Java Web Cookie实例
package cn.com; import java.io.IOException; import java.io.PrintWriter; import java.util.LinkedHashM ...
- J1001.Java原生桌面及Web开发浅谈
自从Java问世以来,在服务端开发方面取得了巨大的发展.但是在桌面/Web开发方面,一直没有得到大的发展.从最初的AWT,到Swing,再到JavaFX,Java从来没有在桌面/Web解决方案中取得重 ...
- 【Java虚拟机】浅谈Java虚拟机
跨平台 Java的一大特性是跨平台,而Java是如何做到跨平台的呢? 主要依赖Java虚拟机,具体来说,是Java虚拟机在各平台上的实现. Java虚拟机在不同的平台有不同的实现.同一份字节码,通过运 ...
- 【转】三年后再反思我的" Java Web项目管理得失谈"
原文: http://blog.csdn.net/csfreebird/article/details/7561189 这篇文章介绍的经验心得不错,故转载之. 三年前,我写了 JavaWeb项目管理得 ...
- java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问
假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...
- Java Service Wrapper 浅谈
在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是 一旦服务器重启或出现异常时,程序往往无法自行修复或重启. ...
- Java基础之浅谈集合
Java基础知识.关于List.Set.Map接口的了解,以及ArrayList.LinkedList.HashSet.TreeSet.HashMap.TreeMap...
随机推荐
- JS实现为控件添加倒计时功能
一.概述 在有些报表需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个 ...
- Java条形码/二维码生成和解析
注意-本类依赖jar包文件:core.jar和zxing-javase.jar 下载jar文件,到本博客文件栏目下载. import com.google.zxing.BarcodeFormat; i ...
- spring boot 事件发布与接收
1.创建发布对象 LoginEvent 2.在要发布对象的地方注入 ApplicationEventPublisher @Autowired ApplicationEventPublisher pub ...
- CJOJ 1943 【重庆八中模拟赛】寻找代表元(二分图最大匹配)
CJOJ 1943 [重庆八中模拟赛]寻找代表元(二分图最大匹配) Description 八中一共有n个社团,分别用1到n编号. 八中一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也 ...
- memcache缓存安装配置
memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.目前用memcache解决互联网上的大用户读取是非常流行的一种用法. 下载安装 前提要先安装libev ...
- GET请求和POST请求的区别
request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求: 超链接:一定是GET请求: 表单:可以是GET,也可以是POST,这取决与<form& ...
- JVM学习(1)——通过实例总结Java虚拟机的运行机制-转载http://www.cnblogs.com/kubixuesheng/p/5199200.html
JVM系类的文章全部转载自:http://www.cnblogs.com/kubixuesheng/p/5199200.html 特别在此声明.那位博主写的真的很好 ,感谢!! 俗话说,自己写的代码, ...
- git创建版本库以及使用
Git使用教程(摘自tugenhua0707) 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央 ...
- SpringMVC配置实例
一.SpringMVC概述 MVCII模式实现的框架技术 Model--业务模型(Biz,Dao...) View--jsp及相关的jquery框架技术(easyui) Contraller--Dis ...
- 关于EF第一次加载慢或过一段时间不访问时再次访问加载慢问题的总结
优化方案 1.安装Application Initialization 这是在iis8出来后才有的,iis8内置的功能,而对于iis7.5也提供了一个扩展以支持这个功能. Application In ...