昨天跟前天讲了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实现自动登录、购物车、防止表单重复提交功能:
购物车: