保存会话数据的两种技术

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. centos网络安装中的注意点

    转自centos网络安装中的注意点 centos网络安装的教程网上很多,这里仅仅记录一下安装过程中网上别处提及很少的注意点. 1.centos默认会安装selinux,并且默认阻止ftp服务,所以要禁 ...

  2. 通过live555实现H264 RTSP直播

    http://blog.csdn.net/firehood_/article/details/16844397

  3. 第一回写的用arraylist模拟栈操作

    package hashMap; import java.util.ArrayList; import d.Student; /** * 用ArrayList模拟栈操作 * @author zhuji ...

  4. [置顶] linux内核启动1-启动参数(启动参数的获取和处理,分析setup_arch)

    最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动. 看的过程中总结了一点东西,希望可以帮助大家调试内核. 当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人 ...

  5. VS代码文件中添加协议格式

    //数据帧格式如下 //+-------+-------+-------+-------+---------+------+-------+ //|包头(2)|地址(1)|功能(1)|长度(1)|数据 ...

  6. When to use DataContract and DataMember attributes?

    When to use DataContract and DataMember attributes? I  am very confused about the DataContract attri ...

  7. UVA_11178_Morley's_Theorem_(计算几何基础)

    描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=23&pag ...

  8. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  9. mongodb windows下服务安装与卸载

    安装服务.bat  内容: d:\mongodb2.4.3\bin\mongod.exe --dbpath d:\data\db --config d:\mongodb2.4.3\mongod.cfg ...

  10. Android Volley - volley StringRequest編碼問題

    有些時候這個類並不能很好的解決中文編碼問題 如果出現亂碼,就 要重寫該類的parseNetworkResponse 方法了. 繼承StringRequest,然後重寫parseNetworkRespo ...