数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a>
==》跳转到自定义的servlet中进行处理,先得到请求的参数id;
==》获取所有cookies  =requst.getCookies()方法。
==》根据名称查找cookie是否存在 。通过循环cookies for(Cookie c:cookies) if(c.getName().eques("product")) 来确定cookie是否为null
==》也就确定是否是第一次访问,如果是第一次访问,新建cookie对象 Cookie cookie=new Cookie("product",id); 回写cookie response.addCookie(cookie);
==》如果存在,先判断是否包含请求的商品编号  if(不包含) cookie.setValue(productIds + "," + id); 回写cookie  response.addCookie(cookie);
 
<%@pageimport="utils.MyUtils"%>
<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</ title>
<style type= "text/css">
     .imga{
     width:160px;
     height:140px;
     }
     .imgb{
     width:80px;
     height:70px;
     }
</style>
</head>
<body>
<img class="imga" src= "/JSP/img/1.jpg"><a href= "../product?id=1">手电筒 </a >
<img class="imga" src= "/JSP/img/2.jpg"><a href= "../product?id=2">电话</a >
<img class="imga" src= "/JSP/img/3.jpg"><a href= "../product?id=3">电视</a ><br />
<img class="imga" src= "/JSP/img/4.jpg"><a href= "../product?id=4">冰箱</a >
<img class="imga" src= "/JSP/img/5.jpg"><a href= "../product?id=5">手表</a >
<img class="imga" src= "/JSP/img/6.jpg"><a href= "../product?id=6">笔记本电脑 </a >
<hr>
<h3> 浏览记录</h3 >
<%
//获取request.cookie
Cookie[] cookies=request.getCookies();
Cookie cookie=MyUtils.getCookieByName(cookies, "product");
if(cookie!=null )
{
     String values=cookie.getValue();
     String [] ids=values.split( ",");
     for(String id:ids)
     {
     %>
     <img class ="imgb" src="/JSP/img/<%= id %> .jpg"><br />
     <%
     }
 
}
 %>
</body>
</html>
 
 
 
 
package Cookie_Servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import utils.MyUtils;
 
/**
 * 浏览记录后台
 *
 * @author sunyb
 *
 */
public class ProductServlet extends HttpServlet {
 
     public void doGet(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
 
            /**
            * 1.获取请求参数 2.获取cookie数组;通过指定名查找自己定义 的coockie 3. 如果cookie为null 则说明是
            * 第一次访问 4 .否则 不是第一次访问
            */
 
            // 获取请求参数 目的,存入到cookie 中
           String id = request.getParameter( "id");
            // 先获取所有的cookie,查找指定名称的cookies数组
           Cookie[] cookies = request.getCookies();
            // 查找指定名称的cookie
           Cookie cookie = MyUtils. getCookieByName(cookies, "product");
            // 如果cookie==null,我第 一次访问,创建cookie,回写
            if (cookie == null) {
                 // 我是第一次访问,创建cookie,回写
                Cookie c = new Cookie( "product", id);
                 // 回写
                response.addCookie(c);
           } else {
                 // 如果不是第一次访问
                 // 获取cookie的value值 ,可能会为 1,2,3
                String productIds = cookie.getValue();
                String[] values = productIds.split( ",");
                 if (!checkId(values, id)) {
                     cookie.setValue(productIds + "," + id);
                     response.addCookie(cookie);
                }
 
           }
            // 重定向到商品页面
          response.sendRedirect( "/JSP/cookies/productList.jsp");
     }
 
     /**
      * 判断当前的 id是否存在到cookies中
      *
      * @param ids
      *            cookies中存在的浏览过的商品id
      * @param value
      *            当前访问的商品id
      * @return 包含到原来的cookies中返回true,否则返回false
      */
     private boolean checkId(String[] ids, String value) {
            for (String tem : ids) {
                 if (tem.equals(value))
                      return true;
           }
            return false;
     }
 
     public void doPost(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
 
           doGet(request, response);
 
     }
 
}

使用Cookie保存商品浏览记录的更多相关文章

  1. Cookie实现商品浏览记录--方式二:JS实现

    使用Cookie实现商品浏览记录:方式二:JS方法实现cookie的获取以及写入.当某一个产品被点击时,触发JS方法.利用JS方法判断一下,此产品是否在浏览记录中.如果不存在,则将产品ID加入到coo ...

  2. javaWeb 使用cookie显示商品浏览记录

    package de.bvb.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date ...

  3. Cookie实现商品浏览记录--方式一:Java实现

    方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ...

  4. Java遇见HTML——JSP篇之商品浏览记录的实现

    一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...

  5. (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除

    //JS实现顾客浏览商品的记录以及实现购物车的功能function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.s ...

  6. 利用COOKIE保存历史浏览商品的一个简单思路

    <?php //如是COOKIE 里面不为空,则往里面增加一个商品ID if (!empty($_COOKIE['SHOP']['history'])){ //取得COOKIE里面的值,并用逗号 ...

  7. 使用cookies查询商品浏览记录

    经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显 ...

  8. 使用cookie实现打印浏览记录的功能

    可以用cookie知识来实现打印浏览记录.这里面用到的思路是将浏览记录以字符串的方式保存到cookie中,当浏览记录增加时,再将其转化为数组. $uri=$_SERVER['REQUEST_URI'] ...

  9. destoon系统开发-最新利用浏览器的cookie 做历史浏览记录

      注意: 代码 放在要显示的为 (一般放在详情页),注意本教程不入库,直接利用浏览器的 cookie 缓存判断    <!--历史浏览记录 S--> <div class=&quo ...

随机推荐

  1. 【mongodb系统学习之十二】mongodb修改数据(一)

    十二.mongodb修改数据:update 1).修改数据库数据:update:语法 db.collectionName.update({},{},boolean,boolean): 2).updat ...

  2. Linux xargs命令

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...

  3. 黄聪:get_posts 函数 | wordpress

    get_posts 函数,简单的来讲是 get_post 的复数新形势,但因为是文章多篇提取,所以使用方法上却略有不同,支持众多参数选择需要提取的文章,在 CMS 主题中经常被用到,当然如果你对 Wo ...

  4. EntityFramework ,ef 介绍

    EntityFramework之领域驱动设计实践 分层架构 在引入实例以前,我们有必要回顾,并进一步了解分层架构.“层”是一种体系结构模式[POSA1],也是被广大软件从业人员用得最为广泛而且最为灵活 ...

  5. mvc 控制器,视图,Razor 语法

    mvc 控制器controller:响应用户请求,并修改模型model;输入数据的处理,输出view数据的提供: url入控制器的方法有关联:MVC提供的是方法调用结果: mvc model:是对应用 ...

  6. 简单数据访问类,生成简单SQL,自动转换成java对象

    import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...

  7. 安装Android SDK和ADT步骤和遇到的问题

    http://894503895.diandian.com/post/2012-05-16/18695648 1.安装eclipse.下载地址:http://www.eclipse.org/downl ...

  8. 【转】H264编码原理以及I帧B帧P帧

    前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以 ...

  9. 辩护技巧总结——律师在刑事辩护中应注意的几个问题 z

    律师在刑事辩护中的角色就像医院中的医生对病人一样,对嫌疑人至关重要.律师的百分之一的失误,对嫌疑人来讲就是百分之百的不幸.因此我在刑事辩护中更加谨慎认真,并归纳了一些注意点供朋友参考.    一.仔细 ...

  10. IntelliJ IDEA 注册码

    IntelliJ IDEA 注册码 *.lanyus.com及*.qinxi1992.cn下的全部授权服务器已遭JetBrains封杀 请搭建自己的IntelliJ IDEA授权服务器,教程在http ...