王刘锁
今天通过两个案例来学习Cookie会话(打开浏览器到关闭浏览器的过程)技术,Cookie是一种类似前两天学习的request和ServletContext域不过Cookie更强大,更符合我们的需要,这两种域中的数据会被共享,而当我们去网上购物一类的需要时就不能把我们的信息和商品共享出来,而今天学的Cookie会话技术可以存储我们私有化的数据到浏览器,那它的存储原理是键值对的方式,一个名字对应一个数据,我们在使用的时候要记住它的一些方法:
第一个案例:首先是用请求对象获取浏览器的所有cookie:request.getCookies()返回一个Cookie数组,如果数组不为空就遍历数组然后是从数组中获取指定名字的cookie,再判断这个cookie是不是空,是空就说明是第一次访问,记录下当前时间存入cookie,如果不是空就不是第一次访问,取出该cookie存储的上次访问时间打印,再把当前时间存入cookie,创建一个Cookie对象,Cookie cookie=new Cookie("name","value");然后是记住一些设置cookie的方法,cookie.getName()获取key,getValue()获取数据,setDomain("domain")设置有效的域名,setPath("path")设置有效的路径,setMaxAge(int maxAge)设置存活时间,通过这些设置方法可以设置持久级别的cookie,
最后再用响应对象存入cookie response.addCookie(cookie);
第二个案例:jsp是动态页面开发技术,在jsp文件中可以写html也可以写Java代码,那我们要记住写Java代码的格式:<% %>被翻译成类的成员(变量,方法,类)尽量少用,<%! %>翻译成service方法的内部(成员,类),<%= %>翻译成service方法内部的out.print()打印,那第二个案例主要内容就是当我们点击某个商品图片会把商品的id提交到我们后台的Servlet中然后获取指定name的cookie后,判断是不是第一次浏览该商品也就是获取指定的cookie是否为null为null就是第一次那我们就直接新建一个Cookie存(addCookie())起来,如果不为null就不是第一次浏览,我们获取到cookie的数据id用一个符号给切开,再把切割后得到的数组封装成linkedList集合,那就再判断是否该商品id已经存在浏览记录中如果存在就删除原来的id再把该商品id添加到第一位,如果我们的浏览记录已经满了就把最后一个id删除再把该商品id添加到首位,最后呢就是我们要把集合再转成字符串,用StringBuffer的append("")方法把几个id用符号连接起来,再把这个新字符串存入cookie就完成了,然后写一个转发到商品详情页的代码就可以了, |