显示商品的浏览记录

package com.cn.cookie;

import java.io.IOException;
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 CookieDemo extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 设置乱码问题
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		// 输出网站所有商品
		response.getWriter().write("本网站有商品如下:<br/>");
		Map<String, Book> map = DB.getAll();
		for (Map.Entry<String, Book> entry : map.entrySet()) {
			Book book = entry.getValue();
			response.getWriter()
					.write("<a  href =‘/Day1/servlet/CookieDemo2?id="
							+ book.getId() + "‘target=_blank‘>"
							+ book.getName() + "</a><br/>");
		}
		response.getWriter().write("<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);
					response.getWriter().write(book.getName() + "<br/>");

				}
			}
		}
	}

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

// 商品的数据库
class DB {
	private static Map<String, Book> map = new LinkedHashMap<String, Book>();
	static {
		map.put("1", new Book("1", "javaweb开发", "老张", "一本好书"));
		map.put("2", new Book("2", "jdbc", "老林", "一本好书"));
		map.put("3", new Book("3", "java", "老萧", "一本好书"));
		map.put("4", new Book("4", "tomcat", "老哥", "一本好书"));
		map.put("5", new Book("5", "mysql", "老李", "一本好书"));
	}

	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 com.cn.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 CookieDemo2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 设置中文乱码问题
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		// 根据用户带过来的id,显示对应商品的详细信息。
		String id = request.getParameter("id");
		Book book = (Book) DB.getAll().get(id);
		pw.write(book.getId() + "<br/>");
		pw.write(book.getName() + "<br/>");
		pw.write(book.getAuthor() + "<br/>");
		pw.write(book.getDesc() + "<br/>");
		// 构建cookie,回写给浏览器
		String cookieValue = buildCookie(id, request);
		Cookie cookie = new Cookie("BookHistory", cookieValue);
		cookie.setMaxAge(1 * 60 * 60 * 24 * 30);
		cookie.setPath("/Day1");
		response.addCookie(cookie);
	}

	private String buildCookie(String id, HttpServletRequest request) {
		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 (BookHistory == null) {
			return id;
		}
		/*
		 * asList():数组转成集合 由于list方法查询慢,所以用linkedList
		 */
		LinkedList<String> list = new LinkedList<String>(
				Arrays.asList(BookHistory.split("\\,")));
		// 由于是按照查看商品的最近记录进行显示的,所以如果以前有浏览过,现在又重新浏览,那么把以前的删掉,然后把现在浏览的放在前面
		if (list.contains(id)) {
			list.remove(id);
			// 因为最多只能显示3个商品,所以把以前浏览过的最后一个商品删除
		} else {
			if (list.size() >= 3) {
				list.removeLast();
			}
		}
		list.addFirst(id);

		StringBuffer sb = new StringBuffer();
		for (String id2 : list) {
			sb.append(id2 + ",");
		}
		return sb.deleteCharAt(sb.length() - 1).toString();

	}

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

}

  

时间: 2024-10-10 00:54:35

显示商品的浏览记录的相关文章

商品的浏览记录

原理:把点击过的商品的goods_id放入 cook==1,2,4,3,5 ; 从数据库查询商品id在1,2,4,3,5中的商品分配到模版页如果cook没有设置cook如果有追加,去重,如果大于5,pop 1 session_start(); 3 //商品的浏览记录 4 $goods_id=mt_rand(1,10); 5 if(empty($_COOKIE['user']['history'])){ 6 setcookie('user[history]',$goods_id,time()+36

使用Cookie实现商品的浏览记录功能

之前在前面一篇文章中简单的介绍了一下Cookie的来历与简单的用法,以及与Session两者之间的区别,然而理论终究还是要与实践相结合的,有了实践,理论才能得以更好的巩固.尤其是编程这种技术性操作性及其强的工作,更需要不断的去实践. 像很多购物网站.淘宝,京东等购物网站,细心的朋友都会发现页面的一侧都会有那种浏览过的商品历史记录信息,之前也只是听说这个是使用cookie机制实现的,但是具体怎么实现的还不是很清楚,通过这两天的学习,终于也大致清楚这其中的奥秘,好了,废话不多说了,这两天练习了一个小

使用cookies查询商品浏览记录

经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显示 的地方加入核心代码: <h2>最近浏览</h2> <div style="height:200px;display:block;overflow:hidden"> <% //获取所有的cookie Cookie[] cookies = requ

jsp写商品显示信息和cookie浏览记录,网上看到的好东西,记录一下。

这是本次项目结果,商品展示页面和浏览历史记录页面. 1,先从数据库入手:创建商品数据库. CREATE TABLE `items` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(50) default NULL,   `city` varchar(50) default NULL,   `price` int(11) default NULL,   `number` int(11) default NULL,   `pict

javaWeb 使用cookie显示商品浏览记录

package de.bvb.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import javax.servlet.ServletException; import javax.servlet.http.C

java cookie记录最近浏览商品记录(取最新的五个浏览记录)

//商品浏览详细信息记录商品id,存到cookie中 package com.kt.servlet_qt; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.servlet.ServletException; im

Java遇见HTML——JSP篇之商品浏览记录的实现

一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 创建实体类(与数据库表一一对应) 创建业务逻辑类(DAO) 创建页面层 二.DBHelper类设计 1 package util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 6 public class D

Cookie案例-显示商品浏览历史纪录

1 package cn.itcast.cookie; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.Date; 6 import java.util.HashMap; 7 import java.util.LinkedHashMap; 8 import java.util.Map; 9 10 import javax.servlet.ServletException; 11 im

Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)

1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据. 例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐. 思考:用户购买的商品保存在r