版权声明:本文为博主原创文章,未经博主允许不得转载。 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 .