A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tfy 中级黑马   /  2012-12-25 00:54  /  1394 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima.cookie.app3;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//显示商品的详细信息
//向客户端发送cookie
public class ShowDetailServlet extends HttpServlet {

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
       
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out=response.getWriter();
                //显示商品的详细信息
                String id=request.getParameter("id");
                Book book=BookDB.findBookById(id);
                out.write("详细内容如下:<br/>");
                out.write(book.toString());
               
                //向客户端发送cookie:bookHistory=
                String value=makeId(request,id);
                Cookie cookie=new Cookie("bookHistory", value);
                cookie.setMaxAge(Integer.MAX_VALUE);
                cookie.setPath(request.getContextPath());
                response.addCookie(cookie);

        }
//组织id
        /*   当前访问数的id       浏览器带过来的id                   组织后的id   
         *    1                    cookie 一个都没有                                                 1
         *    1                    cookie有, 但不是bookHistory         1
         *    1                    bookHistory= 2-1                    1-2                                
         *    1                    bookHistory = 3-2                      1-3-2                       
         *    1                    bookHistory = 2-1-3                    1-2-3                     
         *    1                    bookHistory  = 2-3-4                   1-2-3                        

         *
         */
        private String makeId(HttpServletRequest request, String id) {
                Cookie []cs=request.getCookies();
                //*    1                    cookie 一个都没有                                                 1
                if(cs==null){
                        return id;
                }
//                  1                    cookie有, 但不是bookHistory         1
                Cookie bookHistoryCookie=null;
                for(Cookie c:cs){
                        if("bookHistory".equals(c.getName())){
                                bookHistoryCookie=c;
                        }
                }
                if(bookHistoryCookie==null){
                        return id;
                }
//                 *    1                    bookHistory= 2-1                    1-2                                
//                 *    1                    bookHistory = 3-2                      1-3-2                       
//                 *    1                    bookHistory = 2-1-3                    1-2-3                     
//                 *    1                    bookHistory  = 2-3-4                   1-2-3   
                String oldIds[]=bookHistoryCookie.getValue().split("\\-");
                LinkedList<String> list=new LinkedList<String>(Arrays.asList(oldIds));
               
                if(list.size()<3){
                        if(list.contains(id)){//                 *    1      bookHistory= 2-1                    1-2
                        list.remove(id);
                        }
                        list.addFirst(id);
                }else{
                        if(list.contains(id)){//  1  bookHistory = 3-2                      1-3-2
                                list.remove(id);
                               
                        }else{
                                list.removeLast();
                        }
                        list.addFirst(id);
                }
               
                // 1 2 3   1-2-3
                StringBuffer sb=new StringBuffer();
                for(int i=0;i<list.size();i++){
                        if(i>0){
                                sb.append("-");
                        }
                        sb.append(list.get(i));
                       
                }
               
                return sb.toString();
        }

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

                doGet(request, response);
        }

}


1 个回复

倒序浏览
{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马