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. 查看网站历史记录的2种办法,怎样查看网站历史记录?

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

  3. java 查询后 jsonobject key 排序_商品品牌业务之后台Java代码的编写

    今天是刘小爱自学Java的第146天. 感谢你的观看,谢谢你. 学习计划安排如下: 昨天实现了前端页面的编写以及发送请求,今天关于异步请求工具axios的简单说明. 关于商品品牌,后台代码的完整编写. ...

  4. 【代码审计-JAVA】javaweb代码审计思路

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  5. Java初学者作业——编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额。

    返回本章节 返回作业目录 需求说明: 编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额. 购买总金额达到或超过 1000元,按 8折优惠,送 200元的购物券: ...

  6. 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。

    查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...

  7. java快排算法解读,java 快排的思路与算法

    java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...

  8. Java查询大文本文件的处理方法

    有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能.但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的 ...

  9. java查询数据库以后的对齐问题

    用java连接数据库以后对一个简单的表进行了查询,每个字段用制表符"\t"分隔,查询出的结果出现了列无法对齐的情况,原因是如果字段值长度>=8(例如"salesma ...

最新文章

  1. HBase安装配置以及Java操作hbase
  2. 厉害了!Antiilatency推出移动位置追踪器!
  3. python开发的优秀界面-tkinter python(图形开发界面)
  4. HDU 1573: X问题
  5. Grad-CAM (CNN可视化) Python示例
  6. 这是我看过关于 volatile 最好的文章
  7. Hitting refresh on my career(译)----重新定义我的事业
  8. 在win10上使用Vmware安装Mac OS
  9. 『001』如何在自己的网页里引入一个聊天机器人(。・∀・)ノ
  10. python免费ocr软件_实用工具 | 6款免费OCR神器,总有一款适合你!
  11. CentOS7下安装和配置MySQL5.7亲测有效(附图文)
  12. 20个非常有趣的网站,挺有意思。
  13. 2019年蚂蚁金服面经(已拿Offer)!附答案!!
  14. Altium designer别再傻傻的一个个给元件添加封装了
  15. Linux 基础之虚拟机创建与系统安装
  16. 惹某第8周周记(习题+感悟)
  17. 陕师大计算机好就业吗,陕师大是好学校吗?陕师大出来好不好就业?
  18. 深圳 不是你呆的地方
  19. Python3 学习笔记
  20. 【高等数学笔记】两类曲线积分、曲面积分的转化

热门文章

  1. cookiejar包_http.cookiejar库之CookieJar
  2. Linux下启动、测试、关闭Redis服务
  3. 百度地图-修改marker图标(icon)
  4. 收集IIS配置错误-- 您未被授权查看该页
  5. 计算机技术在设计中的应用浅论,论计算机技术在美术设计中的应用
  6. css 超出省略...
  7. 服务器更改存储位置,WSUS补丁存放位置变更
  8. 构建微服务:使用 API 网关
  9. 关于医院医用医疗隔离电源系统应用案例的分析探讨
  10. 如何保持mysql和redis中数据的一致性?