JavaWeb之商品查看后历史记录代码实现全过程解析。

历史记录思路图:

假设已经访问了商品 :1-2-3

那么历史记录就是1-2-3,如果访问了商品8,那么历史记录就是:8-1-2-3,如果再次访问3那么历史记录就是:3-8-1-2。

当历史记录中存在了商品3,再次访问商品3,将会删除之前的历史记录3,而把当前访问的商品3归为最新访问记录。

实现过程如下:

点击商品,在商品详情页面中的cookie中生成pid,如果返回再次访问其他商品那么Cookie中的信息就是pid=商品id-商品id,以-作为分隔符,这里可以以逗号作为分隔符。

核心代码实现:

//获得客户端携带cookie---获得名字是pids的cookie

Cookie[] cookies =request.getCookies();

String pids=pid;if(cookies!=null) {for(Cookie cookie : cookies) {if("pids".equals(cookie.getName())) {

pids=cookie.getValue();//以-进行分割

String[] split = pids.split("-");

List asList =Arrays.asList(split);

LinkedList list =new LinkedList(asList);//判断集合中是否存在pid

if(list.contains(pid)) {//包含当前查看的商品pid

list.remove(pid);

list.addFirst(pid);

}else{//不包含当前查看商品的pid 直接将该pid放到头上

list.addFirst(pid);

}//使用StringBuffer存储字符

StringBuffer sb =newStringBuffer();//遍历集合并且让集合中的内容每次都<7就是每次历史记录最多显示7条数据

for(int i=0;i

sb.append(list.get(i));

sb.append("-");

}//截除掉最后面的一个-

pids =sb.substring(0,sb.length()-1);

}

}

}//封装到Cookie中

Cookie cookie_pid = new Cookie("pids", pids);

response.addCookie(cookie_pid);

request.getRequestDispatcher("/product_info.jsp").forward(request, response);

完成了这个功能之后,下面就是在历史记录中显示商品信息了。

浏览商品记录模块:

首先思路如下:

从Cookie中寻找pid的值,然后把pid代入数据库查询,然后添加到集合中,然后将历史记录的集合放到域中,最后再用jstl循环调用商品的图片:

首先Cookie中寻找pid的值,然后把pid代入数据库查询,然后添加到集合中,然后将历史记录的集合放到域中实现代码如下:

Web层:

List historyProductList =new ArrayList();

Cookie[] cookies=request.getCookies();if(cookies!=null) {for(Cookie cookie : cookies) {if("pids".equals(cookie.getName())) {

String pids=cookie.getValue();

String[] split= pids.split("-");for(String pid : split) {

Product pro=service.findProductByPid(pid);

historyProductList.add(pro);

}

}

}

}

request.setAttribute("historyProductList", historyProductList);

request.getRequestDispatcher("/product_list.jsp").forward(request, response);

查看service对象中的findProductByPid方法:

service层:

publicProduct findProductByPid(String pid) {//TODO Auto-generated method stub

ProductDao dao =newProductDao();

Product product=null;try{

product=dao.findProductByPid(pid);

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}returnproduct;

}

Dao层:

public Product findProductByPid(String pid) throwsSQLException {//TODO Auto-generated method stub

QueryRunner runner = newQueryRunner(DataSourceUtils.getDataSource());

String sql="select * from product where pid=?";

Product product= runner.query(sql, new BeanHandler(Product.class),pid);returnproduct;

}

然后前端view层jstl调用域中的集合信息:

先引用jstl:

然后通过jstl显示信息:

最后的代码运行效果图:

java历史记录_JavaWeb之商品查看后历史记录代码实现相关推荐

  1. java查询历史记录的思路_JavaWeb之商品查看后历史记录代码实现

    JavaWeb之商品查看后历史记录代码实现全过程解析. 历史记录思路图: 假设已经访问了商品 :1-2-3 那么历史记录就是1-2-3,如果访问了商品8,那么历史记录就是:8-1-2-3,如果再次访问 ...

  2. linux查看更多历史记录,查看更多历史,如何查看浏览历史记录

    查看更多历史,如何查看浏览历史记录以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何查看浏览历史记录 1.进入手机百度 ...

  3. 查看网站历史记录的2种办法,怎样查看网站历史记录?

    有个想购买二手域名的朋友问小黑:如何查看网站历史记录?于是今天就分享查看网站历史记录的 2种办法:网站历史记录和快照. 如果你在下单之前想查一查域名以前做过些什么,有没有违禁记录,被惩罚过,被K过等等 ...

  4. 家用计算机历史记录,教您如何查看电脑使用记录

    很多朋友想查看自己之前使用过的文件或者文档来查询资料,或者是想看电脑是否被人使用过,但是,如何查看电脑使用记录呢?下面系统之家小编教大家查看电脑使用记录小技巧,不用担心找不到电脑使用记录.希望对大家有 ...

  5. 怎样查询计算机登录记录,qq登陆记录,教您QQ如何查看登录历史记录

    qq是我们经常会使用到的一款聊天工具,很多用户都会使用到它.不过,最近一些朋友反馈自己想要在电脑中查看qq登录记录,可是操作了很久都没有成功.当我们的QQ出现异常登陆的时候我们往往会想要查询一下登陆记 ...

  6. oracle命令历史,查看命令历史记录及其操作时间

    查看命令历史记录及其操作时间 一.AIX 平台 默认命令历史记录文件$HOME/.sh_history 1)相关环境变量 HISTFILE          决定命令历史清单文件的文件名,如果不设定, ...

  7. 【leetcode刷题】73.商品折扣后的最终价格——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 法1 - 暴力:时间复杂度O(n^2) 对于每个i位置找j. 法2 - 单调栈 时间复杂度O(n) --leetcode此题热评 ...

  8. Win11查看剪贴板历史记录的方法

    剪切是我们日常使用电脑最常用到的操作之一,用了剪切就会在剪贴板留下历史记录,我们要怎么查看剪贴板的历史记录呢?下面小编就来教教大家Win11查看剪贴板历史记录的详细步骤教程. Win11查看剪贴板历史 ...

  9. TortoiseSVN查看各个历史记录文件

    TortoiseSVN查看各个历史记录文件 解决方法: 右键文件-->TortoiseSVN-->http://www.yayihouse.com/yayishuwu/chapter/21 ...

最新文章

  1. FoxPro 常用内部函数
  2. Spring Cloud 爆高危漏洞!!!
  3. Linux使用vsftpd搭建FTP服务
  4. CRM和C4C里的组织架构 - Organizational Structure
  5. 数据结构实验之排序七:选课名单
  6. JAVA实现AES 解密报错Input length must be multiple of 16 when decrypting with padded cipher
  7. 转行进入测试一年有感
  8. 多线程之线程可见性synchronized
  9. 烂泥:nagios监控单网卡双IP
  10. 8位数码管静态显示c语言,数码管静态显示介绍_8位数码管静态显示程序解析
  11. Claude Shannon 的“创新性思维”演讲:一个天才揭示如何变得具有创新性
  12. Salesforce收购Slack背后的原因,你知道多少?
  13. kolla 部署openstack train版本(三节点controller+compute+storage)------功能测试
  14. LeetCode 1006.笨阶乘
  15. 等额本息Vs等额本金
  16. 今天不谈电商,只聊搜狐的大数据实践!
  17. 完美世界广告萨克斯背景音乐
  18. MATLAB中拉氏变换/拉氏反变换如何代入数值求解具体结果(简析syms函数和sym类型)
  19. pytorch构建YOLOV7网络结构
  20. 旅游的HTML语言,html旅游网站

热门文章

  1. Mysql集群配置(双主一从)+Keepalive高可用
  2. 关于Ubuntu中Firefox浏览器提示“代理服务器拒绝连接”的解决办法
  3. 中国佛学66句震撼世界的禅语+个人感悟
  4. c语言 利息计算系统,银行利息计算系统C语言做
  5. uwsgi+nginx原理介绍
  6. Chrome扩展程序添加CRX插件显示“程序包无效”
  7. 校园导航系统java具有gui,[数据结构大作业]HBU Guide 河北大学校园导航
  8. virsh undefine 报错处理
  9. C3—Qt实现五子棋小游戏(二)2021.11.08
  10. OCR文本检测算法-CTPN模型