cookie的浏览记录

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值