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;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.kt.bean.Easybuy_Shangpin;
import com.kt.bean.Easybuy_ShangpinFenlei;
import com.kt.dao.impl.Easybuyimpl;

public class merchandisetype extends HttpServlet {

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

		PrintWriter out = response.getWriter();
		String uid = request.getParameter("uid");
		String uname = request.getParameter("uname");

		Easybuyimpl e = new Easybuyimpl();
		Easybuy_Shangpin all_ID_Shangpin = e.all_ID_Shangpin(Integer
				.parseInt(uid));
		// 拿到商品id
		int id = all_ID_Shangpin.getEp_id();
		// 保存商品id
		Cookie cookie1 = null;
		// 初始创建cookie
		cookie1 = new Cookie("cookis_id", "");
		cookie1.setValue(id + ",");
		// 多少秒过期
		cookie1.setMaxAge(7 * 24 * 60 * 60);
		// 添加到客户端
		response.addCookie(cookie1);
		// 先获取cookie是否有值
		Cookie[] ck = request.getCookies();
		// 进行判断
		if (ck != null) {
			// 定义累加值的变量为空
			String value = "";
			// 循环cookie拿值
			for (Cookie cookie : ck) {
				// 判断是否存在cookis_id名称
				if (cookie.getName().equals("cookis_id")) {
					// 拿到cookie最新值
					value = cookie.getValue();
					// 将cookie分割以(",")分割
					String[] split = value.split(",");
					// 创建set集合,("因为set能自动识别重复值")
					Set<String> set = new HashSet<String>();
					// 将拿到的值循环放到set中进行判断是否存在相同的数
					for (int i = 0; i < split.length; i++) {
						set.add(split[split.length - (i + 1)]);
					}
					// 清空所定义的值,进行下一轮拼接
					value = "";
					// 创建一个数组
					String[] array = new String[] {};
					// 将set集合的值转换到数组中
					String[] toArray = (String[]) set.toArray(array);
					// 这里进行你要判断你要显示多少条最新记录
					if (toArray.length < 4) {
						// 创建集合
						List<String> list = new ArrayList<String>();
						// 循环toArray数组将值添加到list集合中
						for (int i = 0; i < toArray.length; i++) {
							list.add(toArray[i]);
						}
						// 循环判断拿到的值是否有相同的如果有就移除
						for (int i = 0; i < list.size(); i++) {
							if (Integer.parseInt(list.get(i)) == id) {
								list.remove(i);
							}
						}
						// 最后进行拿到list集合的数据进行拼接
						for (String string : list) {
							value += string + ",";
						}
						// 然后添加最新的数据到cookie中
						cookie1 = new Cookie("cookis_id", value + id + ",");
					} else {// 如果大于你要显示的数据条数
						// 创建集合
						List<String> list = new ArrayList<String>();
						// 循环toArray数组将值添加到list集合中
						for (int i = 0; i < toArray.length; i++) {
							list.add(toArray[toArray.length - (i + 1)]);
						}
						// 定义一个接收被移除的
						String li = list.get(0);
						// 移除
						list.remove(0);
						// 循环判断是否有相同的、和进行value拼接最新的数据
						for (String string : list) {
							if (Integer.parseInt(string) == id) {
								string = li;
							}
							if (Integer.parseInt(string) != id) {
								value += string + ",";
							}
						}
						// 添加最新数据cookis_id
						cookie1 = new Cookie("cookis_id", value + id + ",");
					}
					// 多少秒过期
					cookie1.setMaxAge(7 * 24 * 60 * 60);
					// 添加到客户端
					response.addCookie(cookie1);
				}
			}
		}
		// // 商品分类查询所有
		List<Easybuy_ShangpinFenlei> all_ShangpinFenlei = e
				.all_ShangpinFenlei();
		request.getSession().setAttribute("all_ShangpinFenlei",
				all_ShangpinFenlei);
		request.getSession().setAttribute("uname", uname);
		request.getSession().setAttribute("all_ID_Shangpin", all_ID_Shangpin);
		request.getRequestDispatcher("product-view.jsp").forward(request,
				response);
		out.flush();
		out.close();
	}

}
//获取cookie拿到值,传给jsp界面
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;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.kt.bean.Easybuy_Shangpin;
import com.kt.bean.Easybuy_ShangpinFenlei;
import com.kt.bean.Easybuy_xinwen;
import com.kt.dao.impl.Easybuyimpl;

public class blank extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		// 获取cookie所存放的值
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {// 判断cookie是否为空
			// 创建集合
			ArrayList<Easybuy_Shangpin> all_cookle_Shangpin = new ArrayList<Easybuy_Shangpin>();
			// 定义一个用分解cookie的变量
			String value = "";
			// 循环cookie判断是否存在cookis_id
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals("cookis_id")) {
					// 接收cookie的值
					value = cookie.getValue();
					// 然后以(",")分解拿到数据ID
					String[] split = value.split(",");
					// 循环添加到 all_cookle_Shangpin集合中将最新数据传递给jsp页面
					for (int i = 0; i < split.length; i++) {
						all_cookle_Shangpin.add(e
								.all_cookle_Shangpin(
										Integer.parseInt(split[split.length
												- (i + 1)])).get(0));// split[split.length-
																		// (i +
																		// 1)]指的是从最新的开始拿数据
					}
					// 存到会话中
					request.getSession().setAttribute("all_cookle_Shangpin",
							all_cookle_Shangpin);
				}
			}
		}
		// 使用转发
		request.getRequestDispatcher("index.jsp").forward(request, response);
		out.flush();
		out.close();
	}
}

时间: 2024-09-30 22:48:18

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

cookie技术案例-用户浏览商品的记录

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能

一.字符串拼接的工具类 package blank.util; import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.Vector;import java.util.Map.Entry; public class StringUtil {        public static String jointStr(String sid

从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

原文:从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO CREATE TABLE RANDTEST(ID INT DEFAULT RAND()*100,NAME NVARCHAR(200) DEFAULT 'nihao') GO CREATE INDEX IX_RANDTEST_ID ON RANDTEST(ID)

获取分组后取某字段最大一条记录

获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from test as b where a.type = b.type );

db2中取表的前几条记录 (转)

原文出处:http://csjava.blog.163.com/blog/static/19047003320119110358572/ db2中SELECT TOP N * FORM TABLENAME 是不能取到表中前几条记录的.要使用 SELECT * FROM TABLENAME FETCH FIRST N ROWS ONLY.其中N即是你要取的前几条记录. db2中取表的前几条记录 (转)

获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)

获取分组后取某字段最大一条记录方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from test as b where a.type = b.type ); 方法二:(效率次之) select a.* from test a, (select type,max(typeindex) typeindex from test group by type) b where a.type = b.

pikachu练习平台(XSS-漏洞测试案例(cookie的窃取和利用、钓鱼攻击、XSS获取键盘记录))

XSS-漏洞测试案例 xss案例 1.cookie的窃取和利用 2.钓鱼攻击 3.XSS获取键盘记录 在进行案例之前首先要搭建xss后台 搭建xss后台 1.在pikachu文件夹下面,把pkxss单独放在www下面: 2.修改配置文件  数据库服务器地址,账号,密码: 3.登录: 4.安装: 5.修改,重定向到一个可信的网站(令点击者不知情): 后台登陆成功: 一. get型xss cookie值获取 首先修改字符输入长度: 输入框输入 <script>document.location='

Java反射:根据方法名动态调用方法,解决商品动态属性取值问题。

public class Goods{ private String goodsName; private String attr1; private String attr2; private String attr3; private String attr4; ......... private String attr20; setter/getter方法 } 在数据库表goods中,已知该商品的属性个数N(满足:N=5,attr1—attr5有值,attr6-attr20为空).问如何取

使用集合保存“最近浏览商品” 完美实现商品显示顺序 但性能不高

自己做项目时的代码记录  方式比较笨拙  但可以完成需要的效果[“最近浏览”的商品信息  时刻都在最近浏览界面窗口的第一位置] //3.根据商品id 查询一件商品 同时把当前商品设计进集合中 用来完成浏览记录功能 public String productDetail()throws Exception{ //传递的是商品对应的id Product product=this.productService.productDetail(model); ActionContext.getContext