java查询历史记录的思路_JavaWeb之商品查看后历史记录代码实现
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之商品查看后历史记录代码实现相关推荐
- java历史记录_JavaWeb之商品查看后历史记录代码实现
JavaWeb之商品查看后历史记录代码实现全过程解析. 历史记录思路图: 假设已经访问了商品 :1-2-3 那么历史记录就是1-2-3,如果访问了商品8,那么历史记录就是:8-1-2-3,如果再次访问 ...
- 查看网站历史记录的2种办法,怎样查看网站历史记录?
有个想购买二手域名的朋友问小黑:如何查看网站历史记录?于是今天就分享查看网站历史记录的 2种办法:网站历史记录和快照. 如果你在下单之前想查一查域名以前做过些什么,有没有违禁记录,被惩罚过,被K过等等 ...
- java 查询后 jsonobject key 排序_商品品牌业务之后台Java代码的编写
今天是刘小爱自学Java的第146天. 感谢你的观看,谢谢你. 学习计划安排如下: 昨天实现了前端页面的编写以及发送请求,今天关于异步请求工具axios的简单说明. 关于商品品牌,后台代码的完整编写. ...
- 【代码审计-JAVA】javaweb代码审计思路
前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...
- Java初学者作业——编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额。
返回本章节 返回作业目录 需求说明: 编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额. 购买总金额达到或超过 1000元,按 8折优惠,送 200元的购物券: ...
- 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...
- java快排算法解读,java 快排的思路与算法
java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...
- Java查询大文本文件的处理方法
有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能.但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的 ...
- java查询数据库以后的对齐问题
用java连接数据库以后对一个简单的表进行了查询,每个字段用制表符"\t"分隔,查询出的结果出现了列无法对齐的情况,原因是如果字段值长度>=8(例如"salesma ...
最新文章
- HBase安装配置以及Java操作hbase
- 厉害了!Antiilatency推出移动位置追踪器!
- python开发的优秀界面-tkinter python(图形开发界面)
- HDU 1573: X问题
- Grad-CAM (CNN可视化) Python示例
- 这是我看过关于 volatile 最好的文章
- Hitting refresh on my career(译)----重新定义我的事业
- 在win10上使用Vmware安装Mac OS
- 『001』如何在自己的网页里引入一个聊天机器人(。・∀・)ノ
- python免费ocr软件_实用工具 | 6款免费OCR神器,总有一款适合你!
- CentOS7下安装和配置MySQL5.7亲测有效(附图文)
- 20个非常有趣的网站,挺有意思。
- 2019年蚂蚁金服面经(已拿Offer)!附答案!!
- Altium designer别再傻傻的一个个给元件添加封装了
- Linux 基础之虚拟机创建与系统安装
- 惹某第8周周记(习题+感悟)
- 陕师大计算机好就业吗,陕师大是好学校吗?陕师大出来好不好就业?
- 深圳 不是你呆的地方
- Python3 学习笔记
- 【高等数学笔记】两类曲线积分、曲面积分的转化