cookie的浏览记录

    xiaoxiao2025-03-01  19

    1.商品显示java代码:

    package com.ask.cookie;

    import java.io.IOException;

    import java.io.PrintWriter;

    import java.util.LinkedHashMap;

    import java.util.Map;

    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 Demo2 extends HttpServlet{

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp)

    throws ServletException, IOException {

    req.setCharacterEncoding("utf-8");

    resp.setCharacterEncoding("utf-8");

    resp.setContentType("text/html;charset=utf-8");

    PrintWriter out=resp.getWriter();

    //输出网站的所有商品

    out.println("商品:<br>");

    Map<String, Book> books=Db.getBooks();

    for (Map.Entry<String, Book> entry : books.entrySet()) {

    Book book=entry.getValue();

    out.println("<a href='/myCookie/demo3?id="+book.getId()+"' target=_blank>"+book.getName()+"</a>");

    out.print("<br/><br/>");

    }

    //显示用户曾经看过的商品

    out.println("你已浏览过的商品:<br/><br/>");

    Cookie[] cookies=req.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.getBooks().get(id);

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

    }

    }

    }

    }

    }

    class Db{

    //LinkedHashMap 有序的map集合,用来显示有顺序的输出

    private static Map<String, Book> books=new LinkedHashMap<String, Book>();

    //初始化商品

    static {

    books.put("1",new Book("1","javaweb开发","张三","是一本一张一弛的书"));

    books.put("2",new Book("2","java程序设计","李四","是一本不能再好的书"));

    books.put("3",new Book("3","java设计模式","张三","是一提高智力的书"));

    books.put("4",new Book("4","java高级应用","李四","是一本渴望的书"));

    books.put("5",new Book("5","java经典案例","张三","是一本爱情小说的书"));

    }

    public static  Map getBooks(){

    return books;

    }

    }

    class Book{

    private String id;

    private String name;

    private String author;

    private String descipton;

    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 getDescipton() {

    return descipton;

    }

    public void setDescipton(String descipton) {

    this.descipton = descipton;

    }

    public Book() {

    super();

    // TODO Auto-generated constructor stub

    }

    @Override

    public String toString() {

    return "Book [id=" + id + ", name=" + name + ", author=" + author + ", descipton=" + descipton + "]";

    }

    public Book(String id, String name, String author, String descipton) {

    super();

    this.id = id;

    this.name = name;

    this.author = author;

    this.descipton = descipton;

    }

    }

    2.商品选择之后显示代码: package com.ask.cookie;

    import java.io.IOException;

    import java.io.PrintWriter;

    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;

    public class Demo3 extends HttpServlet {

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp)

    throws ServletException, IOException {

    req.setCharacterEncoding("utf-8");

    resp.setCharacterEncoding("utf-8");

    resp.setContentType("text/html;charset=utf-8");

    PrintWriter out=resp.getWriter();

    //根据用户带过来的id显示商品的详细信息

    String id=req.getParameter("id");

    System.out.println(id);

    Book book=(Book) Db.getBooks().get(id);

    out.println(book.getId()+"<br>");

    out.println(book.getName()+"<br>");

    out.println(book.getAuthor()+"<br>");

    out.println(book.getDescipton()+"<br>");

    //显示用户曾经看过的商品

    //构建cookie响应给浏览器

    String cookieValue=buildCookie(id,req);

    Cookie cookie=new Cookie("bookHistory", cookieValue);

    cookie.setMaxAge(1*30*24*3600);

    cookie.setPath("/myCookie");

    resp.addCookie(cookie);

    }

    //构建cookie响应给浏览器

    private String buildCookie(String id, HttpServletRequest req) {

    String bookHistory=null;

    //获取所有的cookie

    Cookie[] cookies=req.getCookies();

    //遍历cookies

    for (int i = 0; cookies!=null && i < cookies.length; i++) {

    //判断cookies里面有没有bookHistory这个名字的cookie

    if (cookies[i].getName().equals("bookHistory")) {

    //有将这个值赋给bookHistory变量

    bookHistory=cookies[i].getValue();

    }

    }

    //判断这个名字的值是否为空

    if (bookHistory==null) {

    //是空讲id返回

    return id;

    }

    //将获取的cookie名字为bookHistory分割成数组,然后转换为list集合,再将list集合转换linkedList集合

    //用来操作数据方便

    LinkedList<String> list=new LinkedList<String>(Arrays.asList(bookHistory.split("\\,")));

    //判断集合是否包含id ,

    if (list.contains(id)) {

    list.remove(id);

    }else if(list.size()>=3){

    list.remove(id);

    }

    list.addFirst(id);

    StringBuffer sb=new StringBuffer();

    for (String bid : list) {

    sb.append(bid+",");

    }

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

    }

    }

    转载请注明原文地址: https://ju.6miu.com/read-1296760.html
    最新回复(0)