java_Cookies_1_商品浏览历史记录servlet2
public class CookiesServlet2 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();
		// 根据用户带过来的id,显示相应商品的详细信息
		String id = request.getParameter("id");
		Book book = (Book) Db.getAll().get(id);
		out.write(book.getId() + "<br/>");
		out.write(book.getName() + "<br/>");
		out.write(book.getAuthor() + "<br/>");
		out.write(book.getDescription() + "<br/>");
		// 构建Cooikes回写给浏览器
		String cookieValue = buildCookie(id, request);
		Cookie cookie = new Cookie("bookHistory", cookieValue);
		cookie.setMaxAge(1 * 30 * 24 * 60 * 60);
		cookie.setPath("/NANA");
		response.addCookie(cookie);
	}
	private String buildCookie(String id, HttpServletRequest request) {
		// if none cookie, bookHistory=null, cookie value =1
		// if contain cookie,bookHistory=2,5,1 return 1 2 5
		// cookieHistory=2,5,4 browns 1 return 1,2,5 到了列表最大值
		// cookieHistory=2,5 browns 1 return 1,2,5 没到最大值
		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;
		}
		LinkedList<String> list = new LinkedList<String>(
				Arrays.asList(bookHistory.split("\\,")));
		if (list.contains(id)) {
			list.remove(id);
			list.addFirst(id);
		} else {
			if (list.size() >= 3) {
				list.removeLast();
				list.addFirst(id);
			} else {
				list.addFirst(id);
			}
		}
		StringBuffer sb = new StringBuffer();
		for(String bid:list){
			sb.append(bid+",");
		}
		return sb.deleteCharAt(sb.length()-1).toString();
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}
												
											java_Cookies_1_商品浏览历史记录servlet2的更多相关文章
- java_Cookies_1_商品浏览历史记录servlet1
		public class CookiesServlet1 extends HttpServlet { public void doGet(HttpServletRequest request, Htt ... 
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
		1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ... 
- php浏览历史记录的方法
		本文实例讲述了php浏览历史记录的方法.分享给大家供大家参考.具体实现方法如下: /** * 商品历史浏览记录 * $data 商品记录信息 */private function _history($ ... 
- 使用cookies查询商品浏览记录
		经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显 ... 
- Cookie实现商品浏览记录--方式二:JS实现
		使用Cookie实现商品浏览记录:方式二:JS方法实现cookie的获取以及写入.当某一个产品被点击时,触发JS方法.利用JS方法判断一下,此产品是否在浏览记录中.如果不存在,则将产品ID加入到coo ... 
- Java遇见HTML——JSP篇之商品浏览记录的实现
		一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ... 
- 每日技术总结:promise,express route,评分,local storage商品浏览历史,
		最近正在用Vue做一个电商项目.利用工作前后空隙时间. 1.promise的使用 点这里 如何在实际项目中使用Promise 2. Express Route 前后端传参的两种方法 (1)req.pa ... 
- Cookie实现商品浏览记录--方式一:Java实现
		方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ... 
- php浏览历史记录
		/** * 商品历史浏览记录 * $data 商品记录信息 */ private function _history($data) { if(!$data || !is_array($data)) { ... 
随机推荐
- js显示日期时间(集锦)
			1.最简单的时钟显示 <div id="time"></div> <script> setInterval(); </script> 
- java 压缩技术
			package zip; import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStr ... 
- javascript设计模式3
			门户大开式对象 var Book=function(isbn,title,author){ if (isbn==undefined) throw new Error("不合法"); ... 
- ROW_NUMBER  使用
			WITH t_pageAS( SELECT ROW_NUMBER() OVER ( ORDER BY table_name ) AS row_index,column_name FROM table_ ... 
- 检测是否安装了 .NET Framework 3.5
			此脚本是为 Internet Explorer 设计的. 其他浏览器可能在 UserAgent 字符串中不包含 .NET CLR 信息. <HTML> <HEAD> &l ... 
- Bzoj-2190 仪仗队 欧拉函数
			题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 简单的欧拉函数题,实际上就是求gcd(x,y)=1, 0<=x,y<=n ... 
- 使用slf4j取代Apache Commons Logging
			假如你正在开发应用程序所调用的组件当中已经使用了 JCL(之前叫 Jakarta Commons Logging,JCL) 的,还有一些组建可能直接调用了 java.util.logging,这时你需 ... 
- python app progs
- nyoj 845 无主之地1
			无主之地1 时间限制:1000 ms | 内存限制:65535 KB 难度:0 描述 子晓最近在玩无主之地1,他对这个游戏的评价不错,结合了FPS与RPG元素,可玩度很高.不过,他发现了一代的 ... 
- oracle 修改索引现有表空间
			工作日记之<修改索引现有表空间> //dba_indexes可查询所有索引,以及索引部分信息,可以灵活运用于其他用途 //假设用户USER1现有表空间TS1.TS2,需要迁移其下所有表空间 ... 
