zoukankan      html  css  js  c++  java
  • Cookie实现浏览记录

    Cookie实现浏览记录的主要步骤分析如下:

    1.先将product_list.htm转成jsp
        2.点击一个商品,展示该商品的信息,将该商品id记录到cookie  (GetProductById)
            获取之前的浏览记录 例如名称:ids
            判断cookie是否为空
                若为空 将当前商品的id起个名称 ids 放入cookie中  ids=1
                若不为空,获取值 例如:ids=2-1  当前访问的id=1  使用"-"分割商品id
                    判断之前记录中有无该商品
                        若有:
                            将当前的id放入前面  结果 ids=1-2
                        若没有:
                            继续判断长度是否>=3>=3,移除最后一个,将当前的id放入最前面
                                若<3,直接将当前的id放入最前面.
                
                若 ids=3-2-1 现在访问1 结果 ids=1-3-2
                若 ids=4-3-2 现在访问1 结果 ids=1-4-3
    
        3.再次回到product_list.jsp页面,需要将之前访问商品展示在浏览记录中
            获取ids  例如:ids=2-3-1
            切割

    CookUtils工具类下的代码:

    /*
    *    通过cookie的名称获取指定的cookie
    */
    public static Cookie getCookieByName(String name, Cookie[] cookies) {
            if(cookies!=null){
                
                for (Cookie c : cookies) {
                    if(name.equals(c.getName()))
                        return c;
                }
            }
            return null;
    }

    页面显示代码:

    <%
                        //获取指定名称的cookie ids
                        Cookie c=CookUtils.getCookieByName("ids", request.getCookies());
                        
                        if(c==null){
                    %>
                    <h2>暂无浏览记录</h2>
                    <% 
                        }else{
                            String[] arr=c.getValue().split("-");
                            for(String id:arr){
                                %>
                                <img src="products/1/cs1000<%=id %>.jpg" width="130px" height="130px" />
                                <% 
                            }
                        
                        }
                    
                    %>

    后台代码

    String id = request.getParameter("id");
            Cookie c = CookUtils.getCookieByName("ids", request.getCookies());
            String ids="";
            if(c==null){
                ids=id;
            }else{
                ids=c.getValue();
                String[] arr = ids.split("-");
                List<String> asList = Arrays.asList(arr);
                LinkedList<String> list = new LinkedList<>(asList);
                if(list.contains(id)){
                    //若ids中包含id,将id移除放到最前面
                    list.remove(id);
                    list.addFirst(id);
                }else{
                    //若ids中不包含id,继续判断长度是否大于2
                    if(list.size()>2){
                        //长度大于等于3,移除最后一个将当前放到最前面
                        list.removeLast();
                        list.addFirst(id);
                    }else{
                        list.addFirst(id);
                    }
                }
                ids="";
                for (String string : list) {
                    ids+=(string+"-");
                }
                ids=ids.substring(0, ids.length()-1);
            }
            
            
            c= new Cookie("ids", ids);
            
            c.setPath(request.getContextPath()+"/");
            c.setMaxAge(3600);
            response.addCookie(c);
  • 相关阅读:
    解决Hash冲突的几种方式
    深入理解JDK8中的HashMap
    JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换
    Feign调用时读取超时(Read timed out executing GET)解决
    windows上Jenkins安装及其配置
    windows下查看端口被占用及处理
    flutter IOS模拟器无法弹出软键盘
    Android-ION内存管理简介
    移动GPU分类/百科
    ApiGen4.1 windows安装教程
  • 原文地址:https://www.cnblogs.com/133261c/p/9405695.html
Copyright © 2011-2022 走看看