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.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 显示商品列表和已经浏览过的商品
*
* @author joker
*
*/
public class CookieDemo11 extends HttpServlet { 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/>");
for (Entry<String, Book> b : Db.getBooks().entrySet()) {
out.write("<a target='_blank' href='/web/CookieDemo12?id="
+ b.getKey() + "'>" + b.getValue().getName() + "</a><br/>");
} // 显示浏览过的商品
out.write(" <br/> <br/>浏览过的商品: <br/>");
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if (cookies[i].getName().equals("history")) {
String[] ids = cookies[i].getValue().split("\\,");
for (String s : ids) {
out.write(Db.getBooks().get(s).getName() + "<br/>");
}
}
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
}
} class Db {
private static LinkedHashMap<String, Book> books = new LinkedHashMap<String, Book>();
static {
books.put("1", new Book("1", "javaWeb", "javaweb"));
books.put("2", new Book("2", "android", "android"));
books.put("3", new Book("3", "spring", "spring"));
books.put("4", new Book("4", "strus", "strus"));
books.put("5", new Book("5", "ios", "ios"));
} public static Map<String, Book> getBooks() {
return books;
}
} class Book {
private String id;
private String name;
private String description; public Book(String id, String name, String description) {
super();
this.id = id;
this.name = name;
this.description = description;
} public Book() {
super();
} 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 getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} }
package de.bvb.cookie; import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.Map.Entry; import javax.enterprise.inject.ResolutionException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.DateFormatter; /**
* 显示商品详情
*
* @author joker
*
*/
public class CookieDemo12 extends HttpServlet { 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/>");
String id = request.getParameter("id");
for (Entry<String, Book> b : Db.getBooks().entrySet()) {
if (id.equals(b.getKey())) {
out.write(b.getValue().getId() + "<br/>");
out.write(b.getValue().getName() + "<br/>");
out.write(b.getValue().getDescription() + "<br/>");
}
} // 回写cookie,保存最后浏览的商品id
String history = buildIds(id, request);
Cookie cookie = new Cookie("history", history);
cookie.setMaxAge(1 * 30 * 24 * 60 * 60);
cookie.setPath("/web");
response.addCookie(cookie);
} private String buildIds(String id, HttpServletRequest request) {
String history = null;
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if (cookies[i].getName().equals("history")) {
history = cookies[i].getValue();
}
}
if (history == null) {
return id;
}
LinkedList<String> ids = new LinkedList<String>(Arrays.asList(history
.split("\\,")));
if (ids.contains(id)) {
ids.remove(id);
} else {
if (ids.size() >= 3) { // 最多显示3条浏览历史
ids.removeLast();
}
}
ids.addFirst(id);
StringBuffer sb = new StringBuffer();
for (String s : ids) {
sb.append(s).append(",");
}
return sb.deleteCharAt(sb.length() - 1).toString();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }
javaWeb 使用cookie显示商品浏览记录的更多相关文章
- Cookie实现商品浏览记录--方式二:JS实现
使用Cookie实现商品浏览记录:方式二:JS方法实现cookie的获取以及写入.当某一个产品被点击时,触发JS方法.利用JS方法判断一下,此产品是否在浏览记录中.如果不存在,则将产品ID加入到coo ...
- 使用Cookie保存商品浏览记录
数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a> ==>跳转到自定义的servlet中进行处理,先得到 ...
- Cookie实现商品浏览记录--方式一:Java实现
方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ...
- Java遇见HTML——JSP篇之商品浏览记录的实现
一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...
- (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除
//JS实现顾客浏览商品的记录以及实现购物车的功能function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.s ...
- 使用cookies查询商品浏览记录
经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显 ...
- cookie的应用——浏览记录
实体类 package entity; public class Product { private String id; private String proName; private String ...
- destoon系统开发-最新利用浏览器的cookie 做历史浏览记录
注意: 代码 放在要显示的为 (一般放在详情页),注意本教程不入库,直接利用浏览器的 cookie 缓存判断 <!--历史浏览记录 S--> <div class=&quo ...
随机推荐
- 2.准备Python编译环境
2.准备Python编译环境 2.1下载Python2.7.6.tgz.ipython1.2.1.tgz.sqlite-autoconf-3071401.tar.gz 2.2安装Python2.7.6 ...
- 解决Android SDK Manager下载太慢问题
1.打开android sdk manager 2.打开tool->options,如图所示 3.将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy P ...
- android自动填写短信验证码
广播类 package com.examp.azuoyoutong.listner; import java.util.regex.Matcher;import java.util.regex.Pat ...
- javascript原生dom操作方法
一.节点层次属性 考虑空白符的相关层次关系属性: 1.childNodes属性 包含 2.parentNode属性 3.previouseSibling属性和nextSibling属性 4.first ...
- checkbox判断选中
$("input[type='checkbox']").is(':checked')
- 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)
对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度. 由于空间复杂度的要求,需要就地操作链表,不能开辟多余 ...
- Tomcat 部署:工程下 META-INF 目录下的 Context.xml
tomcat 在META-INF 文件夹中添加context.xml,使项目自动应用更新文件 Meta-inf文件夹下新建context.xml. <Context path="/FU ...
- lcd 图片
硬件平台:mini2440 软件环境:UCOS2 .ADS1.2 . LCD彩色图片转换工具BMP_to_H工具bmp2h LCD彩色图片转换工具BMP_to_H工具文件夹下的使用说明 在S3C241 ...
- 配置suse自动化安装
配置suse自动化安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言:不知道你习惯用那款虚拟器,我用的是VMware Workstation,别问我为什么,因 ...
- (转) Java读取文本文件中文乱码问题
http://blog.csdn.net/greenqingqingws/article/details/7395213 最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中 ...