Cookie相关基础
1) 创建Cookie对象,
public Cookie(java.lang.String name,
java.lang.String value)
参数1:表示cookie名称
参数2:表示cookie名称对应的内容
2) 发送cookie数据(服务器发送cookie数据到浏览器中)
set-cookie:请求头: 携带内容(最基本的方式)
简写方式:服务器发送Cookie
void addCookie(Cookie cookie)
3) 服务器会携带cookie到浏览器(自发:浏览器自发的将cookie保存起来),方便下一次服务器传递数据
4) 服务器获取cookie数据
原理:获取的请求头:cookie名称获取内容(最基本的)
简写方式:
Cookie[] getCookies()
Cookie技术的一些细节:
1) 细节1:当前浏览器中发现中文cookie 数据,获取cooike名称对应的内容,需要进行解密(同时,对中文进行加密)
使用的是两个工具类:URLEncorder类和URLDecorder类
2) 细节2:设置cookie的有效时间
public void setMaxAge(int expiry) :
参数分为三种情况:
1) 如果参数为正整数,表示多少秒之后,cookie数据失效了(不存在了)
2) 如果参数是一个负整数,一般情况指定-1,关闭浏览器,cookie就不存在了
3) 如果参数是一个0,那么指定同名的cookie的名称,然后该cookie数据会被删除掉!
4) 细节3:cookie的有效路径
public void setPath(java.lang.String uri):当前cookie的数据是在有效路径下才会起作用,否则,获取不到cookie数据
一般情况:一个站点可以存储多少个cookie数据,不超过300个,可能用到20个作用
public class CookieDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建cookie对象
Cookie coo = new Cookie("name","Rong");
//中文格式
String name = URLEncoder.encode("蓉","utf-8");
Cookie coo2 = new Cookie("name", name);
//设置有效路径
// coo.setPath("/Develop_Servlet_Cookie001");
// coo2.setPath("/Develop_Servlet_Cookie002");
//简写,发送到浏览器
// response.addCookie(coo);
response.addCookie(coo2);
//-1:关闭浏览器就删除cookie。正整数:保存时间
coo.setMaxAge(-1);
coo2.setMaxAge(5);
//获取cookie参数
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies) {
String coo_name = cookie.getName();
String coo_value = cookie.getValue();
//解析获得的值
String coo_devalue = URLDecoder.decode(coo_value, "utf-8");
System.out.println("名:"+coo_name+"\t值:"+coo_devalue);
}
}
}
}
输出系统时间和上次登录时间:
public class TimeDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建系统时间,格式化时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String CurTime = sdf.format(new Date());
//获取cookie数据
Cookie[] cookies = request.getCookies();
//设立初始值
String LastTime = null;
//第一次访问
if(cookies==null && LastTime==null){
//输出系统时间
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("第一次系统时间:"+CurTime);
//编码,创建cookie文件
String en_time = URLEncoder.encode(CurTime, "utf-8");
Cookie last_cook = new Cookie("lasttime", CurTime);
response.addCookie(last_cook);
}
//第二次之后访问,遍历输出数据
if(cookies!=null){
for(Cookie cookie:cookies){
//获取数值
LastTime = cookie.getValue();
//解码文件
String de_LTime = URLDecoder.decode(LastTime, "utf-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("上次登录时间"+de_LTime+"<br/>系统时间:"+CurTime);
//更新时间
CurTime = URLEncoder.encode(CurTime, "utf-8");
cookie.setValue(CurTime);
response.addCookie(cookie);
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Cookie相关基础的更多相关文章
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- Linux 相关基础笔记
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
- selenium webdriver(6)---cookie相关操作
介绍selenium操作cookie之前,先简单介绍一下cookie的基础知识 cookie cookie一般用来识别用户身份和记录用户状态,存储在客户端电脑上.IE的cookie文件路径(win7) ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- NIO相关基础篇一
转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
随机推荐
- CSS 基础拾遗(核心知识、常见需求)
本篇文章围绕了 CSS 的核心知识点和项目中常见的需求来展开.虽然行文偏长,但较基础,适合初级中级前端阅读,阅读的时候请适当跳过已经掌握的部分. 这篇文章断断续续写了比较久,也参考了许多优秀的文章,但 ...
- Web服务器压力测试工具 - HULK
HULK是一种web的拒绝服务攻击工具.它能够在web服务器上产生许多单一的伪造流量,能绕开引擎的缓存,因此能够直接攻击服务器的资源池.hulk的特别之处在于:对于每一个请求都是独特的,能够绕开引擎的 ...
- 在Winform分页控件中集成保存用户列表显示字段及宽度调整设置
在Winform的分页控件里面,我们提供了很多丰富的功能,如常规分页,中文转义.导出Excel.导出PDF等,基于DevExpress的样式的分页控件,我们在其上面做了不少封装,以便更好的使用,其中就 ...
- PHP前后端交互
PHP是现如今十分流行的轻量级语言,经常用来做应用的后端开发,其特点是语法简单,十分容易上手.除了单独做后端,PHP还能够将程序嵌入到HTML文件中执行,非常容易实现简单的前后端交互.而且PHP的运行 ...
- 【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
问题描述 在中国区Azure上,使用Media Service服务,想要使用.NET的代码来对上传视频创建缩略图(Thumbnail) . 通过官网文档(https://docs.azure.cn/z ...
- 2020-12-26:mysql中,表person有字段id、name、age、sex,id是主键,name是普通索引,age和sex没有索引。select * from person where id=1 and name='james' and age=1 and sex=0。请问这条语句有几次回表?
2020-12-26:mysql中,表person有字段id.name.age.sex,id是主键,name是普通索引,age和sex没有索引.select * from person where i ...
- 2022-04-23:给定一个长度为4的整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字。您应该使用运算符 [‘+‘, ‘-‘, ‘*‘, ‘/‘] 和括号 ‘
2022-04-23:给定一个长度为4的整数数组 cards .你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字.您应该使用运算符 ['+', '-', '*', '/'] 和括号 ' ...
- 给你安利一款国产良心软件uTools
前言 大家好,我是xiezhr 最近由于换了新电脑,也是在各种折腾搭建开发环境,安装各种常用软件.今天呢给大家安利一款你可能没用过的国产良心软件uTools,这也是我刚刚拿到电脑后安装的第一款软件吧. ...
- 合合信息亮相CCIG2023:多位大咖共话智能文档未来,文档图像内容安全还面临哪些技术难题?
近日,中国图象图形大会(CCIG 2023)(简称"大会")在苏州圆满落幕.本届大会以"图象图形·向未来"为主题,由中国科学技术协会指导,中国图象图形学学会 ...
- python如何利用算法解决业务上的【分单问题】
分单是很多企业日常工作中非常典型的一项内容,它非常复杂,但同时又极为重要,如何合理的分单是企业管理中一个很重要的课题. 之所以说分单很复杂,是因为影响单据该分给谁,分多少量这个事儿本身就有太多的影响因 ...