利用Cookie记录商品浏览信息

标签: cookie web服务 servlet
2603人阅读 评论(0) 收藏 举报
分类:

 利用Cookie记录商品浏览信息

Web客户端和Web服务端是基于Http协议进行通信的,Http协议具有无状态的特点,服务端只能被动的受理客户端的Http请求,并且不知道该Http是来自于那个客户端。

在实际开发环境中,为了能让服务器在一定程度上可以识别客户端,常利用会话技术来保存客户端和服务端之间的共同信息,通过这些信息,服务器可以获得客户端的一些状态。通过将信息保存在客户端和服务端,会话技术右细分为两类:CookieSessionCookieSession的一个重要的区别就是Cookie将信息保存在客户端,Session将信息保存在服务端。本案例涉及Cookie的基本用法,并且在Cookie的基础上完成商品浏览信息的记录。

1.基础声明

pid字段是数据库中product表记录的主键,是product的唯一标识,通过pid字段可以唯一的查询到商品信息。select* from product where pid =

2.实现思路


2-1实现思路

在上述的实现思路中,主要涉及两个部分的内容:

2.1是如何创建一个Cookie可以保存浏览过的商品的Pid

在此种需求下,不难分析出,有很多个商品浏览记录,也就是需要保存多个pid的值,但是每一个Cookie只能保存一个键值对(Key-value),可以创建多个Cookie保存多个键值队,但是这样开销过大,为了降低开销我们采取拼串的方法利用一个Cookie保存键值对。下面贴出创建Cookie拼串的代码。

Cookie[] cookieArray = request.getCookies();
String recorder="";
if(cookieArray!=null){
for(Cookie cookie:cookieArray){
//recorder是预先设计的Key值 
if("recorder".equals(cookie.getName())){
recorder =cookie.getValue();
//这里预先设置每个pid之间利通“-”分割
String [] pids = recorder.split("-");
//保证List集合中没有重复pid
//并且最新的pid永远放在链表的前面
//这里常进行插入操作,所以用链表
List<String> list =Arrays.asList(pids);
LinkedList<String>linkedList =new LinkedList<String>(list);
if(recorder.contains(id)){
linkedList.remove(id);
}
linkedList.addFirst(id);
StringBuffer stringBuffer = new StringBuffer();
//从链表中恢复前num个字符串,
for(int i=0;i<linkedList.size()&&i<7;i++){
stringBuffer.append(linkedList.get(i)+"-");
}
recorder= stringBuffer.toString();
recorder=recorder.substring(0,recorder.length()-1);
}
}
cookie ck= new Cookie("recorder",recorder);
ck.setMaxAge(60*60*24);
response.addCookie(ck);
2.2如何从Cookie解析出商品的pid,借助解析的pid,查询数据库将结果返回。 

2.2.1 Web层代码

Cookie[] cookies = request.getCookies();
		String result=null;
		if(cookies!=null){
			for(Cookie cookie:cookies){
				if(cookie.getName().equals("recorder")){
						result = cookie.getValue();
						String [] pids = result.split("-");
						//其实将Service换成单例模式比较好
						ProductService service  =new ProductService();
						try {
							List<Product>list = service.getProductListByPids(pids);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						break;
				}
			}
		}
2.2.2 Service层代码

//这里考虑代码的清晰,还是避免频繁的堆栈调用可选用不同的方式实现
	public List<Product> getProductListByPids(String[] pids) throws SQLException{
		// TODO Auto-generated method stub
		List<Product>list =new ArrayList<>();
		ProductDao dao =new ProductDao();
		//这里考虑了解耦合的方式
		for(String pid:pids){
		list.add(dao.getProductBypid(pid));
		}
		return list;
	}

2.2.3 Dao层代码

public Product getProductBypid(String pid) throws SQLException {
		// TODO Auto-generated method stub
	QueryRunner queryRunner = new QueryRunner(ConnectionUtils.getDataSource());
		 String sql = "select * from product where pid=?";
	Product product = queryRunner.query(sql,new BeanHandler<Product>(Product.class),pid);
		 return product;
	}
查看评论

Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)

1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览...
  • Xw_Classmate
  • Xw_Classmate
  • 2016年02月25日 13:47
  • 2180

Cookie小案例-----记住浏览过的商品记录

Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中很常见。这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现...
  • u010590318
  • u010590318
  • 2014年11月03日 23:39
  • 1551

使用Cookie实现商品的浏览记录功能

  • 2014年12月18日 21:29
  • 1013KB
  • 下载

使用Cookie实现商品的浏览记录功能

像很多购物网站、淘宝,京东等购物网站,细心的朋友都会发现页面的一侧都会有那种浏览过的商品历史记录信息,之前也只是听说这个是使用cookie机制实现的,但是具体怎么实现的还不是很清楚,通过这两天的学习,...
  • hu1991die
  • hu1991die
  • 2014年12月18日 21:36
  • 3860

JavaWeb_使用Cookie模拟实现显示最近浏览的商品

模拟实现购物车的显示最近浏览的商品的功能 点击第一个超链接后 点击return后 之前浏览过的书将出现在下方实现方法如下: 代码如下: book.jsp ...
  • chance2015
  • chance2015
  • 2016年02月11日 15:56
  • 2327

cookie案例-查看最近浏览的三件商品商品

一、首先创建实体类Product.java 然后生成set、get方法,有参的无参的构造方法 package entity; public class Product { int id; ...
  • ZBQ857143497
  • ZBQ857143497
  • 2016年11月28日 10:45
  • 610

Cookie案例-显示商品浏览历史纪录

在购物网站中,最常见的一个功能就是当年浏览完几个商品之后,再次访问这个网站,网站会提醒你,你上次看了什么什么商品,或者当你选择好几个商品放入购物车时候最终的结账,都有这个东西,大概是使用Cookie实...
  • a352193394
  • a352193394
  • 2012年01月10日 16:31
  • 3078

利用cookie和session实现购物记录和购物车

利用jsp生成简单的购物界面,再用cookie技术实现向页面输出访问商品记录列表,再利用session技术实现购物车。 首先jsp页面代码 Insert title h...
  • qhwc2009
  • qhwc2009
  • 2015年04月15日 14:36
  • 2520

用cookie实现浏览记录

首先连接数据库 —————————————————————————— 实力类 package com.items.entity; //商品表 public class Items { ...
  • tuobayi
  • tuobayi
  • 2016年11月14日 10:55
  • 357

cookie实现最近浏览商品

一、实现思路      两个jsp页面     1、book1.jsp            示商品链接 ,显示最近浏览的五个商品 (书名)                   》获取所有的cooki...
  • qq_29730101
  • qq_29730101
  • 2017年03月06日 14:53
  • 620
    个人资料
    持之以恒
    等级:
    访问量: 5万+
    积分: 972
    排名: 5万+
    文章存档