Cookie应用--显示看过的商品
阅读原文时间:2023年07月09日阅读:1

package cn.itcast;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieDemo extends HttpServlet {

/\*\*  
 \* The doGet method of the servlet. <br>  
 \*  
 \* This method is called when a form has its tag value method equals to get.  
 \*  
 \* @param request the request send by the client to the server  
 \* @param response the response send by the server to the client  
 \* @throws ServletException if an error occurred  
 \* @throws IOException if an error occurred  
 \*/  
public void doGet(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {  
    response.setCharacterEncoding("UTF-8");  
    response.setContentType("text/html;charset=UTF-8");  
    PrintWriter out=response.getWriter();  
    //输出所有商品  
    out.write("本站所有商品<br/>");  
    Map<String,Book> map=Db.getAll();  
    for(Entry<String, Book> entry: map.entrySet()){  
        Book book=entry.getValue();  
        out.print("<a href='/day01/servlet/CookieDemo2?id="+book.getId()+"' target='\_blank'>"+book.getName()+"</a></br>");

    }  
    //显示用户看过的商品  
    out.print("<br/>看过的商品<br/>");  
    Cookie cookies\[\]=request.getCookies();  
    for(int i=0;cookies!=null&&i<cookies.length;i++){  
        if(cookies\[i\].getName().equals("bookHistory")){  
            String ids\[\]=cookies\[i\].getValue().split("\\\\,");  
            for(String id:ids){  
                Book book=(Book) Db.getAll().get(id);

                out.print(book.getName()+"<br/>");  
            }  
        }  
    }

}

/\*\*  
 \* The doPost method of the servlet. <br>  
 \*  
 \* This method is called when a form has its tag value method equals to post.  
 \*  
 \* @param request the request send by the client to the server  
 \* @param response the response send by the server to the client  
 \* @throws ServletException if an error occurred  
 \* @throws IOException if an error occurred  
 \*/  
public void doPost(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {

    doGet( request,response);  
}

}
//模拟 数据库
class Db{
private static Map map =new LinkedHashMap();
static{
map.put("1", new Book("1","java开发1","zsan1","一本好书1"));
map.put("2", new Book("2","java开发2","zsan2","一本好书2"));
map.put("3", new Book("3","java开发3","zsan3","一本好书3"));
map.put("4", new Book("4","java开发4","zsan4","一本好书4"));

}  
public static Map getAll(){  
    return map;}

}
class Book{
private String id;
private String name;
private String author;
private String desc;

public Book() {  
    super();  
    // TODO Auto-generated constructor stub  
}  
public Book(String id, String name, String author, String desc) {  
    super();  
    this.id = id;  
    this.name = name;  
    this.author = author;  
    this.desc = desc;  
}  
public String getId() {  
    return id;  
}  
public void setId(String id) {  
    this.id = id;  
}  
public String getName() {  
    return name;  
}  
public void setName(String name) {  
    this.name = name;  
}  
public String getAuthor() {  
    return author;  
}  
public void setAuthor(String author) {  
    this.author = author;  
}  
public String getDesc() {  
    return desc;  
}  
public void setDesc(String desc) {  
    this.desc = desc;  
}

}

package cn.itcast;

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

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieDemo2 extends HttpServlet {

/\*\*  
 \* The doGet method of the servlet. <br>  
 \*  
 \* This method is called when a form has its tag value method equals to get.  
 \*  
 \* @param request the request send by the client to the server  
 \* @param response the response send by the server to the client  
 \* @throws ServletException if an error occurred  
 \* @throws IOException if an error occurred  
 \*/  
public void doGet(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {  
    //根据用户带过来的id显示相应的详细信息  
    response.setCharacterEncoding("UTF-8");  
    response.setContentType("text/html;charset=UTF-8");  
    PrintWriter out=response.getWriter();  
    out.write("本站所有商品<br/>");  
    String id=request.getParameter("id");  
    Book book=(Book) Db.getAll().get(id);  
    out.write(book.getDesc());  
    //2.构建cookie,回写给浏览器  
    String cookieValue=bulidCookie(id,request);  
    Cookie cookie=new Cookie("bookHistory",cookieValue);  
    cookie.setMaxAge(30\*24);  
    cookie.setPath("/day01");  
    response.addCookie(cookie);

}

private String bulidCookie(String id, HttpServletRequest request) {  
    // TODO Auto-generated method stub  
    String bookHistory=null;  
    Cookie cookies\[\]=request.getCookies();  
    for(int i=0;cookies!=null&&i<cookies.length;i++){  
        if(cookies\[i\].getName().equals("bookHistory")){  
            bookHistory=cookies\[i\].getValue();  
        }

    }  
    if(cookies==null)  
    {  
        return id;  
    }  
    LinkedList<String> list= new LinkedList(Arrays.asList(bookHistory.split("\\\\,")));  
    if(list.contains(id)){  
        list.remove(id);  
        list.addFirst(id);

    }  
    else  
    {  
        if(list.size()>=3){  
            list.removeLast();  
            list.addFirst(id);  
        }  
        else{  
            list.addFirst(id);  
        }  
    }  
    StringBuffer sb=new StringBuffer();  
    for(String bid: list){  
        sb.append(bid+",");

    }  
    return sb.deleteCharAt(sb.length()-1).toString();

}

/\*\*  
 \* The doPost method of the servlet. <br>  
 \*  
 \* This method is called when a form has its tag value method equals to post.  
 \*  
 \* @param request the request send by the client to the server  
 \* @param response the response send by the server to the client  
 \* @throws ServletException if an error occurred  
 \* @throws IOException if an error occurred  
 \*/  
public void doPost(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {

    doGet( request,response);  
}

}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQwAAAC2CAIAAACjyCRjAAAIjklEQVR4nO3d223rOBSFYdbFglgPq1Ez6sEPBgwEAQyfB1kW74u65CSW/w/BTEYWbWWwV0jqwpgHgCbz2wcA/HWEBBAICSAQEkAgJIBASACBkADCupAMzlg/1l8fvTXGDcXtzYaPwRmTNx29NaXtfe/Ze3RA07EhqZVupaCnZBhjzPJqsK2SjmW/1QXfG9Y6MvaB6iFR5VIrnVL11kOSba3mcM3xGDes2n054NavgdFbQvKJ1vQkc90VC2UeGRVLL3txKsRVIUk/a0W55u85eluNIiFBrD8kgzPOOWOdq9RXgx5uvULVN6LbMht5NZmOZhgJCbr0hmQqnumfo7elWgnHWUkqOoZbc2sVEjWMSj61Q/RxzEmQ6QvJXLnBvwvVEtR3UurrQlIv5NbZrvxjot/8r0OOdsoOjJ4EmY6QBIW0lFCpmJYd03La1pMUat64QfQPhZBMLdwwjkE0pj3Xn0fG55EhiU5Wlao6EFblUp31MYuYk0QV/Nre+H1e6km8t8Y6lx2Ide75QtD7FY+zth2foh2SwcVD9rj/yE8yPV+fhzal39NBttLhkHFD1KR+zWXtcCttEyUuDMmy09Ik/qE3XZ/BW6uHZB6khNuyQdbgTF5ZxRIMW5RCkr/cCMm64RYhwS7VkCzFUD3h87rYUZv7ipAUpv9RCR7bkxQPnpBAO/q2lDBT03ygGpLiJb60TleHJHip3pNEuxAStB0WkiAbUaGVuKH0XtkUpzckYVeXtq/Uc9AkmhWVJuhM3D/dj94q3xpuZWOtvKT/8/lZehKU8TwJIBASQCAkgEBIAIGQAAIhAYRGSO7eXoz9+hu3yN69vVh/z75/DG75HvgJvxGS8cuai+n6us33C9+W7x/fzlzmSxX3cfx24Z7JR/krEcJOvzzcyvuB0V/zZA7uYtz3vMeXNdf4GmPUtyxNzMUY+hns9RYhmfqKvi/3HbzttyMk2G3FcGv016QWH89f2OFQJ2pVbBLq7EmSo+que0KCA3SHZLgt1TZ+2VfxDTcTDn7il8pNAutD8u3SsVYDIcEBtk3cw5fiQoxm2Prd1oYk6pqSr0IrQoIDbAjJPEOYXxpc/H1hWBU2uXvbPcFIB2l3by/W3Wz2EY3PJSTYacVwKzwtGwYjGHGFJ2ebTV67rOpJ5m5qcPGIq3C+a0JIcIDOkKTVFlf8nI3saka9ybKxOyTBlH38sss+d2/LZwUICQ7RF5Lxy4ZdxDR8Ckp5Gu1kVzNaTV4fkS1LVA7J6K/hbGf01+mzku0xQoIDrOhJ4tO+ccUPN2Ou1mapaDR5lGf55ZCkkZv3NBfTOtlFSHCA7jlJcC+J9fds7FS6N6SjSV7BtYuJ8Z7P2b91t+Js5HW5PfzioVtso0JSHuvvNtxqN4zkIYnPXM0nypYtz8CQAfyQakhWnKV9n6//+X8Wp9H4S1e35nAf+BR5SF4X+0gI8Hj8+l3AwN9HSACBkAACIQEEFoIAhNMuBCEfigQ6vcUz7qsXgogWSZkySU6w1VuEZPVCEPmn1O8UBoRzLwQRHjkhwUbnXgii9IMAK517IYjXIXGPMLY790IQzNpxgPMvBMFACzudeCEIpiI4xlkXgpgGdZzRwgHOuRAEF0ZwoDMuBFG+7YXMYCMWggAEFoIABBaCAAQWggAEnkwEBEICCIQEEAgJILAQBCB8xEIQXGfEHm/xjPvqhSDChyJHf+V0NvZ4i5DsWwii8uQw0OkDFoIo3UEM9Dv9QhB/6vQD3tJpF4J4/dlE+hDsdPaFIOa0EBVsdu6FIEo/CLDSiReCiD6FJxOx2VkXgqj8IMB6p1wI4u5tHCfmJNjhjAtBLMcT39sCbMJCEIDAQhCAwEIQgMBCEIDAk4mAQEgAgZAAAiEBBBaCAITTLgTxCHbmojv2eItn3NcvBBG+v+WPuGOXtwjJ1oUghpuxX4O+TRhoOfFCEM+n4TvupQdaTrsQxJoHToCWky4EEcxbCAl2OuVCENGQjJBgpxMuBFF40JeQYIfzLQRR76l+6AEynN35F4KgJ8FOp1wIIt+NkGC7sy4EEb8hIcEOLAQBCCwEAQgsBAEILAQBCDyZCAiEBBAICSAQEkAgJIBASACBkAACIQEEQgIIhAQQCAkgEBJAICSAQEgAgZAAAiEBBEICCIQEEAgJIBASQCAkgEBIAIGQAAIhAQRCAgjbQjI4s7B+/lO7trlo9eBeuy5Gb7OtpW0lo7fGsE42florJFEUIuXKFMVdCsnobfZmpW0VOk71n6H1kwCBVT1JsS8INYs2aT16mxTs9Gq+3Vg/ymqv1H7rkFekEZ+sFZJCuZZERTgVpWpp/ZiW6FzNg4sLt5S7vPJHb8tZICTYrbsnGdzesUmhJ8lCUiz/8iht2TrtMoyEBD+iGpLObuTVNfh5OPQsu3wa3xES71ozlI09WxMhgdTVk3T3ImlFR416epLH4zG4qMqTtwwnG9P3UVeT9Tv0JNhNh0T8/q5V9CMr0M6JexLJ4L/md59aumEcx/Ct5olOz9ljoJ8IyXO0Uqu79Pd08rs5LtnOniRpl4bEe2usc/kZMOeeL4QtS2Or2nagrBGSeXbcHta3QhKfdeoPyVTI8+grvFoZDLHCz3ntVIlX1CT/JEKClmpIluJpDOtFTxJJR0LNkESnhAkJflXHxH1PTxJPPbILII2QFLbHISkeByHB8fpC0teTPEt3xS0lOiThXvWeJNqdkOBYh/Uk8wxmPvUk37Z6divbKQ9J6xjDk8QJJu7Y4rCeJLx4qK/6uaHekyStN1cwPQmOwfMkgEBIAIGQAAIhAQRCAgiEBBAICSAQEkAgJIBASACBkAACIQEEQgIIhAQQCAkgEBJAICSAQEgAgZAAAiEBBEICCIQEEAgJIBASQCAkgEBIAIGQAAIhAQRCAgiEBBAICSAQEkAgJIDwDz/fPyY3vfejAAAAAElFTkSuQmCC" alt="" />

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABzCAIAAAAt5siOAAAEWElEQVR4nO3c0ZGbMBRGYdWlglQP1dAMxWweWIyE7kUSg9fxz/kekgkGmwwHLGNw+AHkhE+vAHA/soYgsoYgsoYgsoYgsoYgsoYgsoYgsoagsaznFOK0+I8vUwwhzeb00wV/5hRCvegyxWBN73vO3rWDnHuz9mJzElxbDiGE/dFsmtPzPt9wor27l4+94iv4Wbc2sLexrd78rKup7p4zsj4hzUOz7yt8tuMuUyTr7zBytN5KMTftNl4wY6keXNMZyvr4WgOB1c+5TNHdecj6+/VnPaeQUgoxJaeIE+1ByGs36BvnXBlVvxZZ12ZeyFpWb9br5l7/XKZobd189HHouGMQsi3dyro1uDi8aofi5RhbS+jLemst+9vYvlmRhzjHsvbTOzszUr9McXR9rXIxU7ViHK0ldGSdbfp9o1ubf5/xGMC1o7VRaUhz4xhsZL0ukeZlyWJe5xw/S4hv0My6OLFhdZjJO9p78t/JG2PrornX9JNjpnW0nqYYYkrVisSUfh/I3mHM9fSm4/91nvWcyqFneYyuT0j8Pr694VvHwmxvOA4SQpqLRfxz4KODkOMyxT6SZ73PtC9S/qcvnS/HH/Oz3t6682nV0GNOoW7BjCZfwsq6fvgk67FBCFk/jpv1vvnckwOvk8/ep65G1sYHzyKae4/W5sqTtaa7vzzP94J1XOtmbX5JcixrOOvsIf9oXcxC1npuyzqruUjDkmbruaqhem/W+dvJcXmnwGyRYnRvfTTkI+P3eeuFqWeDkGoEUkf4x2ffOFrr4HprCCJrCCJrCCJrCCJrCCJrCHpv1s2vb3q+3+lclstG8fLZrMsUG9/SN558WZY5HWcuvhAi+se4L+srt/R2/UCDN4u9cHlh6z6DdeUWVL3zaH12S2+9E9SJHg++7R2nfbsYXT/C+7LuuKX37NYA+/dwzKWdfx/x6zfP8a6sO27pzQYJVdY9d5cPfmS8cMM6vpWXdedd2867f9ctvVmH5tV8rQPrWNYMQZ7kDUfr3lt6y9sN0nS2I8Vp6v9E6t1RQ9SPcXvW3bf07v82jrMXjtb7gta1sAw/HuXerAdv6V0nTEbC92XNkPqJ7sv6yi295pTtyW7ImsHHQ92W9bVbepcphhjr71yuZl28IfAp8bE++uV5+TNQoxd4FGe9d/nPMdSo/BE+mPXZXYGXByHAzwcvTHVPZbtn6YxnIGuYuN4agsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagsgagv4BEFg/XxQ+e0IAAAAASUVORK5CYII=" alt="" />

aaarticlea/png;base64,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" alt="" />