淘宝浏览足迹功能实现(含代码)--cookie案例_xuxualisa的博客-程序员秘密

技术标签: cookie  商品浏览记录  源码  Javaweb案例  显示上次访问时间  

首先,我们做一个类似的案例:访问页面,如果不是第一次访问则返回上次访问的时间。然后可以循序渐进,类似的将访问时间变成上次浏览的商品信息。
前奏:cookie案例-显示上次访问的时间。
需求:如果是第一次访问,输出欢迎信息。
非第一次访问,在欢迎信息之后输出上次访问的时间。
基本步骤:
1) 获取cookie参数,根据指定名字获取cookie的值。
2) 判断该指定名称cookie的值是否为空。为空则就是第一次访问,输出欢迎,然后回写这个cookie。不为空,则返回上一次访问的时间,同样回写cookie。

//1) 设置中文乱码。欢迎界面需要输出中文。对于响应对象的字符流的简写方式(非简:设置缓存编码方式;设置编码头)。
        response.setContentType("text/html;charset=UTF-8");
        //2) 获取cookie参数。获取最后一次访问的cookie参数。
        Cookie[] cookies=request.getCookies();
        //      根据cookie名称获取该名称的参数内容。
        Cookie lastTimeCookie=MyCookieUtils.getCookieByName("lastTime",cookies);
        //      判断该lastTimeCookie的值是否为null,是则输出欢迎界面,并回写cookie。
        if(null==lastTimeCookie){
            response.getWriter().write("欢迎访问该页面。您是第一次访问该页面。");
        }else{
            //      判断该lastTimeCookie的值是否为null,不为空则输出lastTimeCookie,并回写cookie。
            response.getWriter().write("欢迎您再次访问该页面,您不是第一次访问该页面。您上次访问的时间是:"+lastTimeCookie.getValue());
        }
        //3)回写cookie。
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
        Date date=new Date();
        String currentTime=sdf.format(date);
        Cookie writeBackCookie=new Cookie("lastTime", currentTime); 
        response.addCookie(writeBackCookie);

但是这存在一个问题,就是当我们关闭当前使用的这个浏览器,下次打开该浏览器并再次访问该网页的时候,提示显示用户又是第一次访问。这是不对的。修改方式是,在追加cookie之前,设置cookie的有效时间:

//设置有效时间,可以使得该cookie存放在本机硬盘上而不是浏览器上,此处设置存放7天。
        writeBackCookie.setMaxAge(7*24*60*60);

自己编写的工具类:


public class MyCookieUtils {
    public static Cookie getCookieByName(String name,Cookie[] cookies){
        //传入了一串cookie的值,通过这个name找到
        if(null==cookies){
            return null;
        }else{
            for (Cookie cookie : cookies) {
                //要获取名字进行比对,而不是直接用==表达式来作比较
                if(cookie.getName().equals(name)){
                    return cookie;
                }
            }
            return null;
        }
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xuxuzwl/article/details/74180100

智能推荐

小知识整理_整理小贴士 博客_clb929的博客-程序员秘密

★TextBox禁止输入某字符在TextBox的KeyPress事件中加入如下代码,则无法输入数字1 if (e.KeyChar == '1') { e.Handled = true; }对于字母和数字,可以用字符判断,对于一些非可见的按键或特殊按键,可以用ASCII编码判断比如退格键的ASCII...

Android的多媒体框架OpenCore介绍_external/opencore/android.mk:32: external/opencore_hellofeiya的博客-程序员秘密

目录1 第一部分 OpenCore概述   2 第二部分 OpenCore的代码结构 2.1 代码结构  3 第三部分 OpenCore OSCL简介  4 第四部分 文件格式处理和编解码部分简介   5 第五部分 OpenCore Player介绍  6 第六部分 OpenCore Author介绍  编辑本段 回目录第一部分 OpenCo

EBS开发http通用接口__Kafka_的博客-程序员秘密

概述通过java servet作为接收数据的入口,通过url method参数区分不同的接口在 cux_app_interface_pkg处理不同的接口编写java类GetRequestApi.java、PostRequestApi.javaGetRequestApi.java处理http get方式数据PostRequestApi.java处理http post方式数据...

亲测解决知网下载的正版国家标准打开不了_标准阅读器打不开_狂小虎的博客-程序员秘密

Acrobat打开、浏览器打开也失败了。我甚至解密出来,打开成功是一个空白的文档。解决方法是用CajViewer打开。

js获取浏览器内核和版本号,亲测好用,很好用_js 打印浏览器内核_吕化冬的博客-程序员秘密

function getBrowser(n) { var ua = navigator.userAgent.toLowerCase(), s, name = '', ver = 0; //探测浏览器 (s = ua.match(/msie ([\d.]+)/)) ? _set("ie", _toFixedVersion(s[1]...

随便推点

STM32-USB那点事_weixin_33929309的博客-程序员秘密

STM32 USB那点事1 USB那点事2 - Custom HID例子程序解疑 USB那点事3 -使用端口2作为custom HID的传输 USB那点事5之USB通信出错 USB那点事6传输要素 STM32 USB那点事之6 ...

Matlab中的LBP算法源码和python中scikit-image库中的源码_liu_otr的博客-程序员秘密

参考文献:《Rotation Invariant Texture Classification using feature distributions》《Multiresolution gray scale and rotation ivariant texture classification with local binary patterns》matlab中的源码:functi...

数据库open遭遇ora-01555错误_open retlogs ora-01555_Roger的数据库恢复专栏的博客-程序员秘密

原文链接:http://www.killdb.com/2017/07/09/%e6%95%b0%e6%8d%ae%e5%ba%93open%e9%81%ad%e9%81%87ora-01555%e9%94%99%e8%af%af/前几天我们的一位准客户的其中一套较为重要的数据库出现了故障。我们这里先姑且不去分析原因,来将数据库打开提供业务恢复再说。首先我们来看下一线工程师现场发回的报道:...

第三方QQ登录分享_chl520521的博客-程序员秘密

https://blog.csdn.net/qq_37454196/article/details/79801041

深入理解java虚拟机类加载机制,通俗易懂_Alphr的博客-程序员秘密

java源文件经编译后以.class的文件形式存在本地磁盘上,在Class文件中描述的各类信息最终都需要加载到虚拟机中之后才能被运行和使用1.类加载机制在jvm中的位置1.类加载过程虚拟机把类的数据从.class文件加载到内存,并对class文件中的数据进行校验、转换、解析、初始化等操作后,最终形成可以被虚拟机识别并使用的Class对象的过程就叫做“虚拟机的类加载”,主要包括为3大阶段。...

《零基础入门学习Python》第010讲:列表:一个打了激素的数组_来自江南的你的博客-程序员秘密

目录 测试题0. 列表都可以存放一些什么东西?1. 向列表增加元素有哪些方法?2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?3. member.append(['竹林小溪', 'Crazy迷恋']) 和 member.extend(['竹林小溪', 'Crazy迷恋']) 实现的效果一样吗?4. 有列表 name =...

推荐文章

热门文章

相关标签