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();
}
}
分享到:
相关推荐
设计一个可以根据cookie显示用户浏览记录的图书网站。要求设计出三个界面,登录界面、网站主页和图书详细信息界面。用户成功登录后,进入图书网站,网站会显示当前所有图书,以及该用户最近浏览过的图书。当用户...
本文将详细讲解如何使用Cookie来实现商品浏览记录的功能。 首先,理解Cookie的基本概念。Cookie是由服务器端生成,发送到浏览器并存储在本地的一种数据,每当用户访问同一服务器时,这些Cookie信息会被一同发送回...
使用cookie机制实现商品的浏览历史记录功能 主要的实现思路就是通过每次点击商品查看信息的时候 传递一个商品编号 然后保存在cookie中 然后从cookie中取出来 去数据库执行相关的查询操作 之后再到页面上进行显示就ok...
在压缩包中的“servlet实现显示曾经的浏览记录”文件,很可能是包含了实现上述功能的Servlet代码和相关的JSP页面。通过分析这些代码,我们可以更深入地理解如何将理论应用到实际项目中。在实际开发中,通常会结合...
在"Cookie显示浏览历史"的应用中,当用户浏览网页并查看商品时,服务器会通过JavaScript或相关前端框架(如jQuery或React)创建一个或多个Cookie,每个Cookie代表用户查看过的商品。Cookie的名称可以是商品ID,值...
在IT行业中,尤其是在Web开发领域,使用cookies来追踪和显示用户商品浏览记录是一种常见的实践。本文将深入探讨这个主题,帮助你理解如何利用cookies技术来实现这一功能。 首先,我们来了解一下什么是cookies。...
Cookie的生命周期可以设置,例如,我们可能希望在用户关闭浏览器后的一段时间内仍然保留这些浏览记录。 接着,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器...
标题中的“最近浏览记录(Cookies)”指的是网络浏览器中用于存储用户访问历史和偏好设置的一种技术,即Cookies。Cookies是由网站服务器发送到用户的浏览器并存储在本地的一小块数据,当用户再次访问同一网站时,...
在网页开发中,为了提供个性化的用户体验,记录用户浏览历史是一项重要的任务。jQuery,作为一款广泛使用的JavaScript库,提供了方便的API来操作Cookie,而JSON则是一种轻量级的数据交换格式,非常适合用来存储和...
本文将深入探讨“Cookie学习练习记录”这一主题,基于提供的描述和标签,我们将围绕Cookie的使用展开讨论。 首先,让我们理解Cookie的基本原理。Cookie是由服务器发送到用户的浏览器并存储在本地的一小段文本数据。...
本教程将通过一个具体的例子,即“记录浏览过的城市名称”,来深入探讨如何在Express中使用Cookie。 首先,我们需要了解Cookie的基本概念。Cookie是由服务器端发送到浏览器并存储的一小段文本信息。当浏览器向同一...
本文实例讲述了js操作cookie保存浏览记录的方法。分享给大家供大家参考,具体如下: 说明:最近做了一个功能,记录用户浏览过的产品页面。我的思路是,客户每次进入产品页面,就自己调用JS把产品信息以json的形式...
本教程将深入探讨如何使用Servlet实现一个历史记录功能,即浏览记录,让用户能够查看他们之前访问过的页面。 首先,理解Servlet的基本概念是至关重要的。Servlet是一个Java类,遵循Java Servlet API规范,它可以...
总结来说,通过结合JSP和Cookie,我们可以实现网页浏览历史的记录和显示,同时利用Ajax确保用户体验的流畅性。在实际应用中,还需要考虑安全性、隐私保护以及性能优化等问题,比如对敏感信息的加密、限制Cookie大小...
- 查询结果会以`SQLiteDataReader`对象返回,可以通过遍历读取器来获取每条记录的各个字段,如`name`(Cookie名称)、`value`(Cookie值)、`host`、`path`、`expires`等。 4. **处理文件流**: - 有时,我们可能...
"原始缓存ck数据"通常指的是存储在浏览器缓存中的未经过处理的cookie信息,这些信息可能包含用户在各个网站上的活动记录,对于数据分析或问题排查具有重要意义。 【标签解析】 标签列出了"软件/插件",表明这可能是...
"Cookie 最近浏览记录(中文escape转码)具体实现"这个话题主要涉及如何利用Cookie来记录用户的浏览历史,并且处理中文字符在Cookie中的编码问题。本文将详细讲解这个实现过程。 首先,我们了解Cookie的基本用法。在...
本文将深入浅出地解释如何利用Cookie来记录用户在网站上的浏览历史,帮助你理解这一核心技术。 首先,我们要明白Cookie的基本概念。Cookie是由服务器发送到浏览器并存储在本地的一小块数据,当用户再次访问同一网站...