浏览记录

  • 步骤分析
  • 代码实现

1)步骤分析

使用技术:cookie

  1. 进入一个商品详情页面的时候需要记录当前的商品id :
    < a href="${path}/product/particulars?pid=?">…</ a>
  2. 需要在particulars方法中处理cookie
    • cookie名称:ids value:2-1-3
    • 获取指定的cookie:CookieUtils.getCookieName()
      通过request.getCookies()先获取cookie数组,然后遍历cookie,通过cookie的名称判断
      if(“ids”.equals(cookie.getName())){return cookie;}
    • 判断cookie是否为空
      ①若不为空:获取value值,继续判断value值中有无该商品的id(将字符串切割成list)
      * 若有:先移除,然后将商品id放入list的最前面
      * 若没有:继续判断list的长度是否>=3。若>=3,移除最后一个,将当前商品的id放入list的最前面;若<=3,将当前商品的id放入到list的最前面
      最后将list变为字符串
      ②若为空:将当前商品的id放入ids中即可

3.在product_list.jsp中需要将cookie里面的商品展示出来

  • 需要在jsp中获取指定的cookie
  • 判断cookie是否为空
    • 若不为空:获取value ,例如:3-1-2
    • 切割字符串获取每一个商品的id
    • 通过id去数据库中查找商品的信息

2)代码实现

① 在查询详情时把商品加入到cookie中

private void particulars(HttpServletRequest request, HttpServletResponse response) throws Exception{...//4、获取name为ids的cookieCookie cookie=CookUtils.getCookieByName("ids", request.getCookies());//4.1 判断cookie是否为空if(cookie!=null) {//cookie不为空//1 先获取value值(value值形式为2-1-3),把value值切割为listString [] arrIds=cookie.getValue().split("-");List<String> idList=new ArrayList<>();//Arrays.asList(cookie.getValue().split("-"));//把数组中的元素依次放到集合中for(String id:arrIds) {idList.add(id);}//2、判断集合中是否已经包含当前商品if(idList.contains(pid)) {//如果包含,则移除该ididList.remove(pid);//再把该商品id放到list的第一位idList.add(0, pid);}else if(idList.size()>3) {//再继续判断list的长度是否大于3//大于3 则移除最后一个idList.remove(idList.size()-1);//再把该商品id放到list的第一位idList.add(0, pid);}else {//没有该id也不大于3,则直接放到第一个位置idList.add(0, pid);}//把idList改为字符串放入到cookie中String ids=idList.get(0);//遍历集合for(int i=1;i<idList.size();i++) {ids+="-"+idList.get(i);}cookie.setValue(ids);}else {//cookie为空,则直接将商品id放入到ids的cookie中cookie=new Cookie("ids", pid);}//cookie保存3天cookie.setMaxAge(3*24*60*60);//把cookie加入到response中response.addCookie(cookie);//请求转发request.getRequestDispatcher("/jsp/product_info.jsp").forward(request, response);
}

② 在product_list.jsp中上使用Ajax查询cookie中记录并展示

<ul id="historyId" style="list-style: none;">
</ul><!-- 游览记录展示 -->
<script type="text/javascript">$(function(){var ids='${cookie.ids}';//判断是否有浏览记录 是否有name为ids的cookieif(ids){//alert('${cookie.ids.value}');//发送Ajax请求$.ajax({type:"GET",url:"${path}/product/findById?ids=${cookie.ids.value}",dataType:"json",success:function(data){//data为后台穿过来的list的json格式数据//alert(data);//1、获取ul 给ul一个id为menuIdvar $ul=$("#historyId");//2、遍历数组$(data).each(function(){$ul.append($("<li style='width: 150px;height: 216;float: left;margin: 0 8px 0 0;padding: 0 18px 15px;text-align: center;'>"+"<a href='${path}/product/particulars?pid="+this.pid+"'><img src='${path}/"+this.pimage+"' width='130px' height='130px' /></a></li>"));});}});}});
</script>

③ 在ProductServlet中处理ajax请求findById

/*** 根据id查询单个商品--返回json数据* @param request* @param response*/
private void findById(HttpServletRequest request, HttpServletResponse response) throws Exception{System.out.println(request.getParameter("ids"));//得到idsString [] ids=request.getParameter("ids").split("-");//创建一个集合用于存放查找到的商品List<Product> list=new ArrayList<Product>();System.out.println(Arrays.toString(ids));//遍历所有的id,把查找到的商品加入到集合中for(String id:ids) {list.add(productService.getById(id));}System.out.println(list);//处理联级对象,把对象中的category和pdate属性在转换为json是忽略JsonConfig config=JsonUtil.configJson(new String[]{"category","pdate"});//将集合转成json格式返回到页面JSONArray jsonArray = JSONArray.fromObject(list,config);//String json=JsonUtil.list2json(list);System.out.println(jsonArray.toString());//写回去response.setContentType("text/html;charset=utf-8");response.getWriter().println(jsonArray.toString());
}

④ 测试

15_实现浏览器记录相关推荐

  1. QQ被曝自动读取浏览器记录,Chrome、Edge和360等无一幸免

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 当你打开电脑,习惯性登录QQ之后,会怎样? 10分钟后,你的浏览器记录全都被读取了! 不止是Chrome,就连360.Edge.猎豹.234 ...

  2. QQ被曝读取浏览器记录,Chrome、Edge和360等无一幸免

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 3.7 分钟. 来自:量子位 当你打开电脑,习惯性登录QQ之后,会怎样? 10分钟后,你的浏览器记录全都被读取了! 不止是Ch ...

  3. 保护浏览器隐私安全这样做,浏览器记录再也不怕被姐姐看到

    近日,一个姐姐偶然翻开了弟弟的浏览器记录,看到弟弟的搜索记录后,觉得好气又好笑,立刻截图下来发到网上.没想到引来了很多网友的评论,其中一个评论堪称神评:此弟不宜久留.这个评论点赞非常多,看来这个弟弟估 ...

  4. 系统服务器无法理解您的搜索词.,关于360浏览器记录用户的百度搜索记录、常搜词问题2...

    在发现360安全浏览器明目张胆记录用户使用百度搜索引擎的搜索记录后,打开360浏览器用360搜索测试了一下,结果发现:用360搜索搜索过的记录几乎不出现在常搜词那里,但不管是通过①hao123主页的百 ...

  5. 避免门事件 巧妙清除搜狗浏览器记录

    电脑在我们生活中的地位,就如同过去带锁的日记本,隐私,不容侵犯.这不单是指我们保存在电脑里的各种文档.照片.视频文件,更多的是指我们的上网 信息,包括账户密码.浏览过的网址.搜索过的词语等.浏览器,则 ...

  6. hammer日常小记——浏览器记录密码查看

    背景 众所周知,浏览器可以帮助我们记录密码,当我们想知道这个密码但页面不支持或者不让它展示时我们怎么查看密码呢 方式 两种操作方式: 1.浏览器密码管理 浏览器的设置中会有隐私安全项,可以在其中查看密 ...

  7. java清除浏览器记录_Javascript脚本之清除浏览器历史数据

    简介 在某些数据查询页面,点击某条数据查看详细信息,如果此时列表数据有更新(新增.修改.删除等),当点击浏览器的返回按钮时,查看的数据仍然是旧的数据,原因是返回时,查看的是浏览器的缓冲数据,并不会从数 ...

  8. java清除浏览器记录_java – 如何在Selenium测试中清除浏览器缓存

    我正在使用WebDriver运行我的Selenium测试.我正在用一些循环重复测试,所以现在我想在JAVA中开始新的测试之前清除缓存. @Test public void ffAndIe() thro ...

  9. 无意间看到的浏览器记录......

    1 喵:我是风一样的喵主子... 啊错了 (素材来源网络,侵删) ▼ 2 老了谁照顾你? ▼ 3 帮妈妈清理手机垃圾 ▼ 4 你现在做什么工作? (via.欢声笑语bot,侵删) ▼ 5 社会社会 ( ...

  10. 中标麒麟系统安装 chrome浏览器记录

    1:  麒麟系统需要修改  yum 的仓库地址 路径: /etc/yum.repos.d/ 修改  repo中的仓库路径地址 2: key证书的复制 /etc/pki/rpm-gpg/ 路径下的 RP ...

最新文章

  1. MIT Graph实践概述
  2. POJ 1144 Network (求割点)
  3. TerryLee技术专栏WCF后传正文 WCF后传系列(3):深入WCF寻址Part 3—消息过滤引擎...
  4. POJ 2516 基础费用流
  5. 利用DataSet对Xml文件操作
  6. 关于ORACLEOraDb11g_home1TNSListener服务启动后又停止问题的关键点
  7. 洛谷P1182 数列分段`Section II`
  8. iphone保修期多久_卖疯了!开发区9.9元起换iphone原厂电池!
  9. 雷军99亿人民币薪酬创世界纪录,相当于100个库克
  10. NVIDIA发布先进的软件定义自主机器平台DRIVE AGX Orin
  11. 做诗人,其实真的很冤
  12. Flutter 列表踩坑2
  13. Java TCP通信概念及实例
  14. c语言俄罗斯方块源代码 解说,C语言课程设计俄罗斯方块源代码解说.doc
  15. 让MDK5开发51单片机
  16. MatConvNet安装问题
  17. 现场总线-Can基础知识
  18. Android高级开发进阶图谱
  19. python3 全局热键_python3注册全局热键的实现
  20. unity实现游戏中拍照功能(自动生成小照片)

热门文章

  1. 【ML小结6】关联分析与序列模式关联分析
  2. 【迅速上手】Python 画图 —— 箱图与密度图
  3. 【2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11) G】GCD Guessing Game【数论思维题】
  4. 任一矩阵都可表为一对称矩阵和反称矩阵之和
  5. Hvv近期0day总结一
  6. linux6的关机快捷键是,LINUX关机快捷键是什么?
  7. ArcGIS 10.3 AddIN编译旧版本项目问题
  8. Node.js笔记(0003)---Express框架Router模块学习笔记
  9. [Delphi]用程序更改 IE 的代理服务器(Proxy)设置及本地连接
  10. 模仿showModalDialog的总在最前