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 ...
随机推荐
- Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护
本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context ↳an ...
- MongoDB的C#封装类
代码: samus驱动 using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...
- MongoDB Map Reduce
介绍 Map-Reduce是一种计算模型,简单的说就是将大批量的工作分解(MAP)执行,然后再将结果合并成最终结果(REDUCE). MongoDB提供的Map-Reduce非常灵活,对于大规模数据分 ...
- python判断类型
方法 isinstance(obj, type) 示例 >>> print isinstance(, int) True >>> print isinstance( ...
- UILabel属性
1.text:设置标签显示文本. 2.attributedText:设置标签属性文本. Ios代码 NSString *text = @"first"; NSMutableAttr ...
- bind: address already in use
2016/04/18 09:46:06 server.go:36: listen at 0.0.0.0:9530 2016/04/18 09:46:06 server.go:39: listen er ...
- AngularJS form表单验证(非常全面)
构建一个ng表单 novalidate=”novalidate” 2.form中不能有action属性.提交交由ng-submit处理 3.每个input一定要有ng-model,最好有一个name方 ...
- The Struts dispatcher cannot be found. This is usually caused by using Strut
The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the assoc ...
- 异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults
有方法说找到web.config 文件修改如下(蓝色部分) <behaviors> <serviceBehaviors> <behavior> ...
- NLS_LANG参数说明
NLS_LANG参数说明 格式: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每个成分控制了NLS子集的特性.其中: Lang ...