简述cookie
1.Cookie的概述
* Cookie是客户端的技术(默认把Cookie保存在每个用户的浏览器上)
* 程序把每个用户的数据以cookie的形式写给用户各自的浏览器
* 当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去
2.Cookie的原理
* Cookie基于客户端的技术,Cookie的对象是服务器端创建的,默认把Cookie保存在客户端浏览器上
* Cookie基于http的协议,默认有两个(set-cookie是响应头,服务器端到客户端 cookie是请求头,客户端到服务器端)
* Cookie可以在客户端与服务器端进数据的传递
cookie对象的api
=====================================================================================
Cookie的对象
Cookie(String name, String value) -- 构造方法,是key:value的形式(强调:Cookie中不支持中文的)
String getName() -- 获取cookie的名称
String getValue() -- 获取cookie的值
void setValue(String newValue) -- 设置值
void setMaxAge(int expiry) -- 设置Cookie的有效时间
如果浏览器关闭了,cookie默认就被清除了,Cookie默认的情况下是保存在浏览器的缓存中
设置有效的时间,Cookie就变成了持久的cookie.默认的情况下,把Cookie保存到本地的文件中
******************代码开始*********************
代码:(需求:显示用户上次访问的时间(和Cookie的原理相同),注意不管是否是第一次访问,都要设置cookie的有效时间)
// 设置输出到页面的编码格式,解决字符流的中文乱码问题
response.setContentType("text/html;charset=UTF-8");
// 首先判断是否是第一次访问
Cookie[] cookies = request.getCookies();
// 查找名称为lasttime的cookie
Cookie cookie = CookieUtils.getCookieByName(cookies, "lasttime");
// 处理当前时间
String currentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
if (cookie==null) {
// 第一次访问
cookie = new Cookie("lasttime", currentTime);
// 设置cookie的有效时间 1小时
cookie.setMaxAge(60*60);
// 向浏览器回写cookie
response.addCookie(cookie);
// 输出一句话
response.getWriter().write("欢迎,第一次访问!");
} else {
// 不是第一次访问,取cookie中的值
String lastTime = cookie.getValue();
// 输出一句话
response.getWriter().write("欢迎,上次访问时间为: " + lastTime + ", 下次早点来啊!");
// 设置cookie的有效时间 1小时
cookie.setMaxAge(60*60);
// 将cookie的值设置为当前时间(记录这一次的时间)
cookie.setValue(currentTime);
// 向浏览器回写cookie
response.addCookie(cookie);
}
******************代码结束*********************
void setPath(String uri) -- 设置Cookie的有效路径
* 第一次访问的时候,/lasttime的默认的有效路径是/day11
* 访问demo2.jsp http://localhost/day11/pages/demo2.jsp 如果访问的是/day11/下的任何资源,都会携带cookie的数据!
* 第二次访问的时候,/web/lasttime,默认的有效路径是/day11/web
* 访问demo2.jsp http://localhost/day11/pages/demo2.jsp ,不会携带cookie的数据!
* 如果访问的是 http://localhost/day11/web/pages/demo2.jsp ,携带cookie的数据!
有效路径决定什么事情呢?
访问项目中其他资源时,是否携带cookie!!
******************例子开始*****************
cookie.setPath("/personal");// 设置cookie的有效路径,那么访问/personal下(personal项目)的任何资源,都会携带cookie的数据!这就是设置有效路径的作用!!
******************例子结束*****************
操作Cookie对象的方法
response.void addCookie(Cookie cookie) -- 向浏览器回写cookie对象
request Cookie[] getCookies() -- 获取浏览器发送过来的Cookie,返回的数组
简述cookie的更多相关文章
- 简述cookie ,localStrage,sessionStorage的区别?
1.cookie: 是一个回话跟踪技术,信息存储在用户硬盘,可以做全局变量. 什么是会话:用户进入网站,开始浏览到结束的这样的一个过程,称为一次会话. 会话跟踪技术:浏览器和服务器之间进行多次请求数据 ...
- 简述COOKIE和SESSION的区别与联系?
cookie 和session 的区别:1.cookie数据存放在客户的浏览器上,session数据放在服务器上.2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 ...
- Servlet题库
一. 填空题 Servlet中使用Session对象的步骤为:调用 HttpServletRequest.getSession() 得到Session对象,查看Session对象,在会话中保 ...
- Webfrom基础知识
MyBeNASP.NET内置对象 (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server ...
- 【Javaweb】笔面试题 ---(1)
Javaweb 面试题:理解才是最重要的,而不是原封不动的背下来 一.请简述doget和dopost它们的区别 1) get是从服务器上获取数据,post是向服务器传送数据. 2) 在客户端,Get方 ...
- 总结一些php的面试题
1.PHP语言的一大优势是跨平台,什么是跨平台?一.PHP基础: PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配置,不 ...
- php面试题汇总四(基础篇附答案)
1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION 与 COOKIE的区别是什么,请从 ...
- 邓_php面试【003】——完整版
php面试题汇总四(基础篇附答案) 1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION ...
- Python面试真题第三节
51.正则匹配,匹配日期2018-03-20 url='https://sycm.taobao.com/bda/tradinganaly/overview/get_summary.json?dateR ...
随机推荐
- 排序系列 之 直接插入排序算法 —— Java实现
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...
- mysql 分组查询问题 group_concat
这几天在做购物车的时候.购物车内的商品为一个商品占一行,结果再从数据库读出的时候,没有分组,而是循环所有的内容出来,然后进行判断.如果一样的话就把他保存到一个变量中.但是自己逻辑没搞清楚.一直出bug ...
- 错误笔记:Caused by: java.lang.StackOverflowError
今天在将一个map转化成json出现堆栈异常,排查原因如下:出现循环递归( rootMap.put("rootMap", rootMap);),栈内存肯定耗光 代码: /** * ...
- apt-get install *** 出现 软件包***没有提供可供安装的候选者
今天,重新安装Ubuntu13.04后,在命令行输入 sudo apt-get install aptitude 提示: 软件包 aptitude 没有提供可供安装的候选者 sudo apt-get ...
- java 调用 sql server存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- IE8下ajax请求失败的解决方案
今天发现IE9以下的浏览器,ajax请求返回数据异常研究半天发现是type参数未设置,由于默认方式是Get,添加上type:“post”就恢复正常了
- DIPHA
https://github.com/DIPHA/dipha http://www.rkwitt.org/blog/topological_machine_learning.html 一.预装软件 1 ...
- Asp.net Web.Config - 配置元素 trace
一.trace的元素的属性 属性 说明 enabled 是否启用应用程序跟踪.为了使用 Trace.axd 查看器,必须启用跟踪.默认情况下,Trace.axd 查看器被添加到httpHandlers ...
- 对字符串进行简单的字符数字统计 探索java中的List功能
题目: 统计一个字符串中数字和字符串的个数,并分别进行排列,要求 1.数字,字符串可以从键盘获取. 2.储存在list 3.统计数字个数,字符串个数 4.把数字和字符串按从小到大的顺序输出 5.不能使 ...
- 使用自定的Adapter绑定ListView/GridView数据
使用自定的Adapter绑定ListView/GridView数据(地址) 对于ListView/Gridview的数据绑定, google提供了一些Adapter的模板, 自己也可以自定义一些个性化 ...