cookie和session的理解
2016-10-07 23:52
239 查看
昨天跟前天讲了HttpServletRequest,HttpServletResponse,Cookie, Seesion,怎么说呢, 觉得还是cookie和session比较难些,request与response到不怎么难的,主要是因为使用cookie与session实现的功能有点多了,比如:使用Cookie获得商品浏览记录,买过电脑的童鞋都应该知道,我们买电脑之前是不是都上网看看那款电脑的性价比高,你在浏览电脑的同时,他会将你电脑的电脑存到一个浏览记录里,你从这个浏览记录中可以看到你浏览了那些电脑。而session呢,它实现的功能就有点多了,比如:著名购物车就是用session实现的,自动登录,在服务器端还可以使用session来做放置表单重复提交。做的东西一多感觉就有点小难了。。。
1、cookie:
cookie是客户端技术,当用户访问服务器时,服务器会为每个回话创建一个session,在创建完之后向客户端写入一个cookie,cookie name:JSESSIONID, cookie: session.getId(), cookie默认是会话级别的,他储存在浏览器的内存中,当浏览器关闭时,会话级别的cookie也就被删除,但是也可以通过调用cookie的setMaxAge方法设置它的有效时间,利用这一点可以让cookie帮我们干一些事情,干什么事情呢?比如:获得上次访问某个站点的时间; 获得商品浏览记录。
使用Cookie获得商品浏览列表和上次访问的时间 (要想cookie记住用户浏览记录,则必须将创建的cookie添加到响应头上)
使用cookie获得商品浏览记录:
1、得到所有的cookie,并检查其中有没有目标cookie
2、若在所有得到的cookie中,没有检查到目标cookie, 那么就创建一个目标cookie,并设置他的有效时间。这是唯一能保证保证cookie能记住浏览信息的方法。因为cookie默认是会话级别的,它保存在浏览器的缓存中,当关闭浏览器时,cookie也就随之消失了
使用cookie删除浏览记录:
1、创建一个cookie,区别标示名与目标cookie的区别标示名相同,并设置他的有效时间为0, 例如:Cookie cookie = new Cookie("visite", ""); cookie.setMaxAge(0);
这样创建了一个cookie,用它来直接覆盖掉目标cookie。
cookie声明周期:用户访问服务器, 服务器创建session,向客户端写入一个cookie,会话级别的cookie,在推出浏览器时,被删除;否则,有效期过了也别删除。
2、session
session是服务器端技术,当用户访问服务器时,服务器会把用户的数据保存到一个单独的session中。
session声明周期:用户访问服务器时,服务器首先会检索请求中有没有session的一个标示号成为JESSIONID,若有则服务器就会检索出相应的session,若没有就会重新创建一个session可能是服务器删除了该用户的session对象),session是在调用getSession(true)方式时创建。当服务器被关闭,session超时或者调用了session的invalidate方法销毁session在这三种情况下,session对象会被销毁
我们使用session实现自动登录、购物车、防止表单重复提交功能:
购物车:
[java] view
plain copy
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
Map<String, Integer> map = null;
//先创建一个session,
HttpSession session = request.getSession();
//在session中检查有没有Map集合
map = (Map<String, Integer>) session.getAttribute("map");
//若Map集合为空,那么重新创建一个,然后将这个Map集合设置到session中
if (map == null) {
map = new HashMap<String, Integer>();
session.setAttribute("map", map);
}
Integer count = map.get(id);
if (count == null) {
//当商品被第一次浏览,则count = 1
count = 1;
System.out.println("null count = 1");
} else {
//当商品已经被浏览过了,则count++
System.out.println(" not null count ++");
count ++;
}
map.put(id, count);
1、cookie:
cookie是客户端技术,当用户访问服务器时,服务器会为每个回话创建一个session,在创建完之后向客户端写入一个cookie,cookie name:JSESSIONID, cookie: session.getId(), cookie默认是会话级别的,他储存在浏览器的内存中,当浏览器关闭时,会话级别的cookie也就被删除,但是也可以通过调用cookie的setMaxAge方法设置它的有效时间,利用这一点可以让cookie帮我们干一些事情,干什么事情呢?比如:获得上次访问某个站点的时间; 获得商品浏览记录。
使用Cookie获得商品浏览列表和上次访问的时间 (要想cookie记住用户浏览记录,则必须将创建的cookie添加到响应头上)
使用cookie获得商品浏览记录:
1、得到所有的cookie,并检查其中有没有目标cookie
2、若在所有得到的cookie中,没有检查到目标cookie, 那么就创建一个目标cookie,并设置他的有效时间。这是唯一能保证保证cookie能记住浏览信息的方法。因为cookie默认是会话级别的,它保存在浏览器的缓存中,当关闭浏览器时,cookie也就随之消失了
使用cookie删除浏览记录:
1、创建一个cookie,区别标示名与目标cookie的区别标示名相同,并设置他的有效时间为0, 例如:Cookie cookie = new Cookie("visite", ""); cookie.setMaxAge(0);
这样创建了一个cookie,用它来直接覆盖掉目标cookie。
cookie声明周期:用户访问服务器, 服务器创建session,向客户端写入一个cookie,会话级别的cookie,在推出浏览器时,被删除;否则,有效期过了也别删除。
2、session
session是服务器端技术,当用户访问服务器时,服务器会把用户的数据保存到一个单独的session中。
session声明周期:用户访问服务器时,服务器首先会检索请求中有没有session的一个标示号成为JESSIONID,若有则服务器就会检索出相应的session,若没有就会重新创建一个session可能是服务器删除了该用户的session对象),session是在调用getSession(true)方式时创建。当服务器被关闭,session超时或者调用了session的invalidate方法销毁session在这三种情况下,session对象会被销毁
我们使用session实现自动登录、购物车、防止表单重复提交功能:
购物车:
[java] view
plain copy
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
Map<String, Integer> map = null;
//先创建一个session,
HttpSession session = request.getSession();
//在session中检查有没有Map集合
map = (Map<String, Integer>) session.getAttribute("map");
//若Map集合为空,那么重新创建一个,然后将这个Map集合设置到session中
if (map == null) {
map = new HashMap<String, Integer>();
session.setAttribute("map", map);
}
Integer count = map.get(id);
if (count == null) {
//当商品被第一次浏览,则count = 1
count = 1;
System.out.println("null count = 1");
} else {
//当商品已经被浏览过了,则count++
System.out.println(" not null count ++");
count ++;
}
map.put(id, count);
相关文章推荐
- 关于cookie 和session 的理解
- 正确理解web交互中的cookie与session
- session和cookie的一些理解
- 深入理解cookie与session
- 对session和cookie的一些理解
- session和cookie的最深刻理解
- 对session和cookie的一些理解二
- 对session和cookie的一些理解
- cookie和session之自己的理解
- 对于session和cookie的理解
- 深入理解Servlet/JSP之“Cookie和Session原理”
- 深入理解Servlet/JSP之“Cookie和Session原理
- Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系
- [转]对session和cookie的一些理解
- 对session 与cookie的理解
- 理解cookie和session
- session和cookie的最深刻理解
- 深入理解PHP中的Session和Cookie
- 对Session和Cookie的区分与理解
- session和cookie的理解和使用