使用Cookie实现显示商品浏览记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kaizuidebanli/article/details/83020014

一、准备工作

1. 准备一个小的类淘宝商品浏览的网页;

2. 在WebContent目录下新建一个jsp文件, product_list.jsp, 然后拷贝原来product_list.html的内容到jsp里面。 
   建好之后,jsp里面的所有ISO-8859-1 改成 UTF-8建好之后,jsp里面的所有ISO-8859-1 改成 UTF-8

	拷贝html标签的所有内容。 替换jsp的html标签即可

3. 修改product_info.htm里面的手机数码超链接地址;

		<li class="active"><a href="product_list.jsp">手机数码<span class="sr-only">(current)</span></a></li>

4. 修改首页(index.html)顶部的手机数码跳转的位置为 product_list.jsp

		<li class="active"><a href="product_list.jsp">手机数码<span class="sr-only">(current)</span></a></li>

二、商品浏览记录工作原理分析

在这里插入图片描述

三、商品浏览记录Servlet代码编写

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//获取当前用户浏览商品的id
	String id = request.getParameter("id");
	Cookie[] cookies = request.getCookies();
	Cookie cookie = CookieUtil.findCookie(cookies, "history");
	if (cookie==null) {
		Cookie cook = new Cookie("history", id);
		//	response.sendRedirect("product_info.html");
		cook.setMaxAge(60*60*24*7);
		//	cook.setPath("/demo1");
		response.addCookie(cook);
	}else{
		String id2 = cookie.getValue();
		cookie.setValue(id+"#"+id2);
		cookie.setMaxAge(60*60*24*7);
		//	一定要有这句!!!,否则cookie值更改不成功
		response.addCookie(cookie);
	}
	// 重定向到商品详情页面
	response.sendRedirect("product_info.htm");
}

/**
 * 从一个cookie数组中找到具体我们想要的cookie对象
 * @param cookies
 * @param name
 * @return
 */
public static Cookie findCookie(Cookie[] cookies , String name){
	if(cookies != null){
		for (Cookie cookie : cookies) {
			if(name.equals(cookie.getName())){
				return cookie;
			}
		}
	}
	return null;
}

四、jsp显示浏览记录

之后再jsp页面上通过request对象获取到这个保存浏览商品id的拼接字符串的cookie,将其进行解析,并展示再页面上就可以了。

在这里插入图片描述

五、清除浏览记录

其实就是清除Cookie, 删除cookie是没有什么delete方法的。只有设置maxAge 为0 。

Cookie cookie = new Cookie("history","");
cookie.setMaxAge(0); //设置立即删除
cookie.setPath("/CookieDemo02");
response.addCookie(cookie);

六、 Cookie总结

1. 服务器给客户端发送过来的一小份数据,并且存放在客户端上。

2. 获取cookie, 添加cookie

request.getCookie();

response.addCookie();

3. Cookie分类

(1) 会话Cookie

默认情况下,关闭了浏览器,那么cookie就会消失。

(2)持久Cookie
// 在一定时间内,都有效,并且会保存在客户端上。 

cookie.setMaxAge(0); //设置立即删除

cookie.setMaxAge(100); //100 秒

4. Cookie的安全问题。

由于Cookie会保存在客户端上,所以有安全隐患问题。 还有一个问题, Cookie的大小与个数有限制。 为了解决这个问题 —> Session .

猜你喜欢

转载自blog.csdn.net/kaizuidebanli/article/details/83020014