方式一:Java代码方式实现:此种方式实现思路较为顺畅。
难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助addFirst()方法将此id插入到最前面。具体实现如下:
(1). 在JSP页面中,显示所有的商品列表。当我们选择某一款产品时,通过超链接跳转到Servlet中,并将此产品的ID一并传过去。
```
<dt><a href="<%=path %>/servlet/do_home_control?param=recode&ep_id=${ep.ep_id}" target="_self"><img src="data:images/product/1.jpg" /></a></dt>
```
(2). 在Servlet中,接收产品id。
```
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String param = request.getParameter("param");
        String path = request.getContextPath();
        PrintWriter out = response.getWriter();
                //......
        if("recode".equals(param)) {
            String ep_id = request.getParameter("ep_id");
            // 如果是首页显示,则ep_id为null,则只显示cookie中的值即可。
            // 根据cookie的name,重设对应的value
            String cvalue = Tool.BuildCookie("productRecode", ep_id, request);
            // 将新的cookie写入
            Cookie cookie = new Cookie("productRecode", cvalue);
            cookie.setMaxAge(3600 * 1000);
            cookie.setPath("/");
            response.addCookie(cookie);
            // 根据id获得对应的产品集合,最终将产品列表显示到jsp页面中
            List<Easybuy_Product> eps = new ArrayList<Easybuy_Product>();
            for (String c : cvalue.split(",")) {
                eps.add(productService.getProductByEp_Id(Integer.parseInt(c)));
            }

            request.getSession().setAttribute("productRecode", eps);
            response.sendRedirect(request.getContextPath()
                    + "/product-view.jsp?ep_id=" + ep_id);
        }
}
```
(3). 上面涉及到一个方法,将此方法写到工具类中了。

```
//Tool.java工具类中写了下面的两个方法
    /**
     * 将id添加到cookie中,并返回最终的Cookie字符串
     * @param cookieName
     * @param ep_id
     * @param request
     * @return String
     */
    public static String BuildCookie(String cookieName, String ep_id,
            HttpServletRequest request) {

        StringBuilder sb = new StringBuilder();
        String recodeValue = getCookieValue(cookieName, request);
        // 判断cookie的value值中是否包含此id
        if (recodeValue == null) {
            // 判断ep_id是否为空。如果为空,则为首页显示
            if (ep_id == null || "".equals(ep_id)) {
                return null;
            }
            return ep_id;
        } else {
            //转换成LinkedList很有必要。普通的ArrayList想要实现最近浏览的产品移动到最前面比较困难,不如LinkedList提供的方法来的直接。
            LinkedList<String> s = new LinkedList<String>(
                    Arrays.asList(recodeValue.split(",")));
            // 判断ep_id是否为空。如果为空,则为首页显示
              //如果ep_id不为空,则判断LinkedList中是否包含此ID。如果包含,则移除掉。然后将此ID放置到列表中的第一个位置。
            if (ep_id != null) {
                if (s.contains(ep_id)) {
                    s.remove(ep_id);
                }
                //商品显示3条
                if (s.size() > 3) {
                    s.removeLast();
                }
                s.addFirst(ep_id);
            }
            for (String bid : s) {
                sb.append(bid + ",");
            }
            return sb.deleteCharAt(sb.length() - 1).toString();
        }
    }

    /**
     * 根据cookieName获取cookie对应的value值
     *
     * @param cookieName
     * @return
     */
    public static String getCookieValue(String cookieName,
            HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();
        String recodeValue = null;
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if (cookieName.equals(cookie.getName())) {
                    recodeValue = cookie.getValue();
                    break;
                }
            }
        }
        return recodeValue;
    }
```
这个功能就这样实现了!如果你有想法,咱们一起探讨!

Cookie实现商品浏览记录--方式一:Java实现的更多相关文章

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

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

  2. 使用Cookie保存商品浏览记录

    数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a> ==>跳转到自定义的servlet中进行处理,先得到 ...

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

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

  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实现打印浏览记录的功能

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

  7. cookie的应用——浏览记录

    实体类 package entity; public class Product { private String id; private String proName; private String ...

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

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

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

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

随机推荐

  1. python打开文件的模式

    r打开只读文件,该文件必须存在. r+打开可读写的文件,该文件必须存在. w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. w+打开可读写文件,若文件存在则文 ...

  2. Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)

    实验平台:win7,VS2010 先上结果截图: 文章最后附有生成该图的程序. 1. 刚体模拟原理 Bullet作为一个物理引擎,其任务就是刚体模拟(还有可变形体模拟).刚体模拟,就是要计算预测物体的 ...

  3. xpath轴的正确使用姿势

    网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解. 背景--python中使用xpath:  ----------------------------------- ...

  4. 解析C语言结构体对齐(内存对齐问题)

    C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...

  5. Java中封装、继承和多态

    封装: 封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度. 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性. 访问修饰符有public,private,prot ...

  6. JQuery 阻止js事件冒泡 阻止浏览器默认操作

    //阻止事件冒泡 event.stopPropagation(); //阻止浏览器默认操作 event.preventDefault(); 代码不一定能执行,写给自己看的. 事件冒泡: <a h ...

  7. 11.12模拟考T2(GCD)

    2.梅花桩   (blossom.pas/c/cpp) [问题描述] 小x在练习一门轻功,这门轻功是在梅花桩上跳来跳去,这门轻功是严格按照直线从一个梅花桩直接跳到另外一个梅花桩上.因为小x有恐高症,所 ...

  8. [THINKING IN JAVA]访问权限控制

    6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...

  9. AutoLearnSkills.lua --升级自动学习技能

    --[[作者信息: Auto Learn SKills (升级自动学习技能) 作者QQ:247321453 作者Email:247321453@qq.com 修改日期:2014-3-12 功能:在玩家 ...

  10. javaWeb——图片验证

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...