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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM