cookie 和 HttpSession
保存会话数据的两种技术
Cookie
Cookie 是客户端技术,程序把每个用户的数据以cookie的形式写给用户的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。web资源处理的就是用户各自的数据了。
HttpSession
session是服务端技术,服务器在运行时可以为每个用户的浏览器创建一个独享的HttpSession对象,由于session为用户浏览器独享,所以用户再次访问时会拿取session中数据。
案例一:使用cookie记录上次访问的时间
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//拿到客户端携带的记录上次访问时间的cookie:加上cookie的名字是lastaccesstime,值是一个long类型额数字
//拿到客户端携带的所有的cookie
Cookie[] c = request.getCookies();
//循环判断,拿到需要的cookie
for (int i = ; c != null&&i < c.length ; i++) {
Cookie cookie = c[i];
if(cookie.getName().equals("lastaccesstime")){
out.write("你上次访问的时间是:");
String time = cookie.getValue();
//time-->long
long t = Long.parseLong(time);
//formate
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//create a date object
Date d = new Date(t);
//output
out.write(sdf.format(d) + " <a href=''>清除cookie</a>");
}
}
//向客户端发送cookie
Cookie nc = new Cookie("lastaccesstime",new Date().getTime()+"");
//设置缓存时间,放到硬盘上,不在缓存中,默认cookie的生命周期就是一个会话
nc.setMaxAge(Integer.MAX_VALUE);
//发送到客户端
response.addCookie(nc);
}
删除客户端cookie
因为没有删除cookie的方法,所以通过添加新的cookie来覆盖之前的cookie
" <a href='"+ request.getContextPath() + "/servlet/cookie2" +"'>清除cookie</a>"
cookie2
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //没有删除的方法,所以就创建一个同名的cookie,将存活时间设置为0,覆盖客户端原来的cookie
Cookie c = new Cookie("lastaccesstime","");//不需要设置值,就是为了失效,根本用不到
c.setMaxAge();
//发送到客户端
response.addCookie(c);
}
获取上次的cookie
需要指定cookie的路径,只有cookie的路径和访问路径对应才能获取:
设置路径
nc.setPath(request.getContextPath());
获取cookie
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.write("你上次访问的时间是:");
//需要设置浏览器携带cookie的路径 //拿到所有的cookie
Cookie[] cs = request.getCookies();
//拿到记录上次访问时间的cookie
for (int i = ; cs != null && i < cs.length; i++) {
Cookie c = cs[i];
if(c.getName().equals("lastaccesstime")){
String value = c.getValue(); out.write(value);
}
}
}
cookie是否为唯一 :域名 + 访问路径 + Cookie的名字
cookie 和 HttpSession的更多相关文章
- Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession
JSP1.什么是JSP jsp即java server pages,它是Javaweb的动态资源. jsp = html + java脚本 + jsp动态标签(包含EL表达式)2.JSP中java脚本 ...
- Cookie与HttpSession对象
Cookie与HttpSession对象的作用 维护客户端浏览器与服务端会话状态的两个对象. 由于HTTP协议是一个无状态的协议,因此服务端不会记录当前客户端浏览器的访问状态 有些时候需要服务端能够记 ...
- JavaEE:Cookie和Session
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样web资源处理的就是用户各自的数据了. ...
- JSP(3)—Cookie和Session
HTTP是一个无状态的协议,web服务器无法分辨出那些请求是同一个浏览器发出的,浏览器每一次请求都是孤立的 即使HTTP1.1支持持续链接,但当用户有一段时间没有请求时,连接也会关闭. 如何实现网上的 ...
- Java web会话简单应用
Java会话主要分为两块:Cookie和HttpSessionCookie技术:会话数据保存在浏览器客户端.Session技术:会话数据保存在服务器端.一.下面介绍一下Cookie的应用1. Cook ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- chem01- 添加商品到购物车
1. package selleck.web.cart; import java.io.InputStream; import java.math.BigDecimal; import java.sq ...
- 【转】学习JAVA的步骤
好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...
- java专业规划(转载)
1. Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础 ...
随机推荐
- PHP 判断从表单提交的值是否为空
@$time = $_GET['time'];if(empty($time)) { echo "empty";} else { echo "not empty" ...
- Android LogCat 日志记录
日志级别列表如下(从低到高): V — Verbose (lowest priority) D — Debug I — Info W — Warning E — Error F — Fatal S — ...
- 【BZOJ 1191】 [Apio2010]特别行动队 (斜率优化)
dsy1911: [Apio2010]特别行动队 [题目描述] 有n个数,分成连续的若干段,每段的分数为a*x^2+b*x+c(a,b,c是给出的常数),其中x为该段的各个数的和.求如何分才能使得各个 ...
- [转贴] C/C++中动态链接库的创建和调用
DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...
- 三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息
三点经验:长时间运行函数需要随时发射信号报告进度,以及设置bool变量随时可以退出,每做一步操作必须及时记录和处理相关信息 不能到最后一起处理,否则万一中间出错了,这个记录状态就全部都乱了.
- vs2010自带的报表
本例用来显示Northwind中的order details表中的数据交分组 1.建立一WinForm程序,并建立一数据库连接,选择order details表,此时会自动建立一个xsd的数据集类,如 ...
- Learning WCF Chapter1 Hosting a Service in IIS
How messages reach a service endpoint is a matter of protocols and hosting. IIS can host services ov ...
- XP中IIS“HTTP 500 - 内部服务器错误”解决方法
我先把主要过程叙述一下,叙述完有每个问题的具体操作方法. 今天我在XP上安装IIS,运行网站出现"HTTP 500 - 内部服务器错误". 打开HTML没有问题,打开ASP文件时就 ...
- bzoj1406
这道题很有意思 我们解过线性同余方程,也解过同余方程 这个则是求x^2≡1 (mod p) 可以将问题转化为(x-1)(x+1)≡0 (mod p) 然后我们穷举一下p的约数i, 看i|x-1,p/i ...
- 面向中国 Azure 开发者发布开源解决方案指南
发布于 2014-05-23 作者 刘 天栋 Azure 是一个开放.灵活的云平台,可支持大量且不断增长的开源应用程序.框架和语言.微软及微软开放技术通过与全球及中国本地的开源社区不懈地合作,将 ...