JavaWeb开发--cookie用法总结
今天刚刚学过cookie的用法,为了防止忘记,就在这里总结一下。
一、cookie的由来的原因
Http协议是无状态的协议,它不会记录用户与服务器多次交互需要保留或记录的状态信息。cookie 的出现旨在帮助服务器记录浏览器访问状态信息,服务器可以读取访问它的浏览器中的cookie信息,并进行相应操作,例如:用户的自动登陆信息、网上商城的购物车等都由此实现。
二、cookie概念
cookie实际上是web服务器通过浏览器保存在客户端硬盘上的一个文本文件,它只能进行文本信息的保存,内容以键值对(key/value)形式进行保存,类似于"request.setParameter(name,value)"方法的形式。cookie文件可以通过程序进行读写。在java程序中,可以通过javax.servlet.http.Cookie对象来读写访问浏览器的cookie信息,并执行相应操作。
三、cookie的创建
cookie对象在创建构造器时,就要传入相应的key/value:
//创建cookie对象,并传入要存储的字符串以及对应的名称
javax.servlet.http.Cookie cookie=new javax.servlet.http.Cookie("key",value);
注:其中的value的值只允许是字符串,而不能是其他的对象。
常用方法:
//设置有效时间,单位为秒(与之对应的有getter方法)
cookie_username.setMaxAge(60*60*24);
//设置域名(与之对应的有getter方法)
cookie_username.setDomain(String pettern);
//设置提交的路径(与之对应的有getter方法)
cookie_username.setPath(uri);
//保存cookie到客户端浏览器
response.addCookie(cookie);
//获取cookie的名字(与之对应有setter方法)
cookie.getName();
//获取cookie的值(与之对应有setter方法)
cookie.getValue();
四、cookie的读取
cookie的读取是通过request.getCookies()方法进行的,该方法可以读取访问浏览器中的所有cookie,并返回一个Cookie对象的数组。
//读取访问浏览器cookie
javax.servlet.http.Cookie[] cookies=request.getCookies();
javax.servlet.http.Cookie cookie=null;
//判空
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
cookie=cookies[i];
//输出cookie的名字
System.out.println(cookie.getName());
//输出cookie的值
System.out.println(cookie.getValue());
}
}
五、cookie的写入
cookie写入是通过response.addCookie()方法进行的。
//创建cookie对象,并传入要存储的字符串以及对应的名称
javax.servlet.http.Cookie cookie=new javax.servlet.http.Cookie("key",value);
//设置有效时间,单位为秒
cookie_username.setMaxAge(60*60*24);
//保存cookie
response.addCookie(cookie);
六、cookie的删除
删除cookie没有专用的方法,但可以通过设置cookie的有效时间为0,或是将cookie对象的值设为空即可。
七、cookie的修改
//读取Cookie对象数组
javax.servlet.http.Cookie[] cookies=request.getCookies();
javax.servlet.http.Cookie cookie=null;
//遍历cookie数组
for(int i=0;i<cookies.length;i++){
cookie=cookies[i];
//查找符合条件的cookie
if(cookie.getName().equals(condition)){
//设置值
cookie.setValue(value);
//设置有效时间
cookie.setMaxAge(time);
//写入cookie(切记修改之后要记得写入)
response.addCookie(cookie);
}
}
注:
1.cookie的数量和大小有限,不能用来存储大量的数据;
2.cookie的内容中不可出现汉字;
3.cookie的安全性较低,不适合用于保存敏感信息(例如重要的账号和密码);