保存会话数据的两种技术

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) + "&nbsp;<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

"&nbsp;<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的更多相关文章

  1. Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession

    JSP1.什么是JSP jsp即java server pages,它是Javaweb的动态资源. jsp = html + java脚本 + jsp动态标签(包含EL表达式)2.JSP中java脚本 ...

  2. Cookie与HttpSession对象

    Cookie与HttpSession对象的作用 维护客户端浏览器与服务端会话状态的两个对象. 由于HTTP协议是一个无状态的协议,因此服务端不会记录当前客户端浏览器的访问状态 有些时候需要服务端能够记 ...

  3. JavaEE:Cookie和Session

    Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样web资源处理的就是用户各自的数据了. ...

  4. JSP(3)—Cookie和Session

    HTTP是一个无状态的协议,web服务器无法分辨出那些请求是同一个浏览器发出的,浏览器每一次请求都是孤立的 即使HTTP1.1支持持续链接,但当用户有一段时间没有请求时,连接也会关闭. 如何实现网上的 ...

  5. Java web会话简单应用

    Java会话主要分为两块:Cookie和HttpSessionCookie技术:会话数据保存在浏览器客户端.Session技术:会话数据保存在服务器端.一.下面介绍一下Cookie的应用1. Cook ...

  6. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  7. chem01- 添加商品到购物车

    1. package selleck.web.cart; import java.io.InputStream; import java.math.BigDecimal; import java.sq ...

  8. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

  9. java专业规划(转载)

    1. Java语言基础     谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础 ...

随机推荐

  1. Ubuntu/Linux下7款轻量级编辑器 (转)

    From http://www.feiyan.info/39.html 在Windows卧铺使用Zend Studio或者EditPlus写PHP,Zend Studio适合大项目,EditPlus配 ...

  2. [HDOJ 5212] [BestCoder Round#39] Code 【0.0】

    题目链接:HDOJ - 5212 题目分析 首先的思路是,考虑每个数对最终答案的贡献. 那么我们就要求出:对于每个数,以它为 gcd 的数对有多少对. 显然,对于一个数 x ,以它为 gcd 的两个数 ...

  3. 你晓得吗?大多数企业根本没有做到 DevOps!

    作为当代 IT 企业提升效率的葵花宝典,DevOps 对 IT 企业效率的提升有目共睹 ,一时之间各大企业纷纷用提升效率的 DevOps 开发.协作.管理工具武装自己. 对比 2014 年上半年,CS ...

  4. AD认证

    这两天接触到一个新的知识点,AD验证.什么是AD验证?Active Directory——活动目录,活动目录只是LDAP的一个实现,提供LDAP认证.Radius认证和NTML认证,都是标准认证方式 ...

  5. BZOJ1510: [POI2006]Kra-The Disks

    1510: [POI2006]Kra-The Disks Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 265  Solved: 157[Submit][ ...

  6. ☀【JS】有效状态机

    JavaScript与有限状态机http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html

  7. 【Android 开源】:最火的Android开源项目 第01期

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  8. (转载)JS事件监听 JS:attachEvent和addEventListener使用方法

    (转载)http://www.chhua.com/web-note146 attachEvent和addEventListener使用方法 Js代码 <html> <head> ...

  9. HDU- Who Gets the Most Candies?

    Who Gets the Most Candies? Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 262144/131072K (J ...

  10. 理解I/O Completion Port

    欢迎阅读此篇IOCP教程.我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼.OK,但我不能保证你明白IOCP的一切,但我会尽我 ...