cookie记录用户浏览过的物品
2017-02-24 09:34
344 查看
思路如下:
为了便于后期的操作,所以使用collection,其中使用collection中的contains方法更加严谨点,因为contains方法不止判断值是否相同,也会判断类型是否相同,并且collection中的实现内linkedList中针对集合操作更加方便,如:addFirst(),removelast(),在cookie中我们拿到的value值是字符串,把字符串转换成集合的话我们可以借助Arrays工具类的asList()方法,它会把数据转化为一个collection的集合,但是由于不知道是是具体那种集合,所有得用linkedList的构造方法把这个collection接口转换为linkedList。
1.1 首先判断指定的cookie存不存在
1.1.1
假如不存在
则直接把拿到的id,添加到新创建的cookie中去,并且设置cookie的最大生命时间,响应给浏览器
假如存在
我们拿到cookie中的value值转换,完成后我们首先判断是否在我们规定范围内的数量,
是的话则判断是否重复,
有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位
没有的话则直接把id添加到linkedList的第一位
不是的话判断是否重复
有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位
没有的话则删除最后一位的id,并拿传入的id添加到linkedList的第一位
1.2 最后把linkedList转化为字符串,并且对相应内容做判断,判断是否是最后一位
是的话,则拼接的时间不添加分隔符
不是的话,则添加相应的分隔符号
把字符串添加到cookie中,并且设置cookie的最大生命时间,响应给到浏览器中去
代码如下:
Cookie newCookie = null;
Cookie[] cookies = request.getCookies();
String string = null;
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies;
if ("hist".equals(cookie.getName())) {
string = cookie.getValue();
break;
}
}
}
System.out.println(string);
if (cookies == null || string == null) {
newCookie = new Cookie("hist", commodityId);
newCookie.setMaxAge(1 * 30 * 24 * 60 * 60);
response.addCookie(newCookie);
} else {
String[] split = string.split(",");
LinkedList<String> linkedList = new LinkedList<>(Arrays.asList(split));
if (linkedList.size() < 3) {
if (linkedList.contains(commodityId)) {
linkedList.remove(commodityId);
linkedList.addFirst(commodityId);
} else {
linkedList.addFirst(commodityId);
}
} else {
if (linkedList.contains(commodityId)) {
linkedList.remove(commodityId);
linkedList.addFirst(commodityId);
} else {
linkedList.removeLast();
linkedList.addFirst(commodityId);
}
}
String str = "";
for (int i = 0; i < linkedList.size(); i++) {
if (i == linkedList.size() - 1) {
str += linkedList.get(i);
} else {
str += linkedList.get(i) + ",";
}
}
System.out.println(str);
newCookie = new Cookie("hist", str);
newCookie.setMaxAge(1*30*24*60*60);
response.addCookie(newCookie);
}
为了便于后期的操作,所以使用collection,其中使用collection中的contains方法更加严谨点,因为contains方法不止判断值是否相同,也会判断类型是否相同,并且collection中的实现内linkedList中针对集合操作更加方便,如:addFirst(),removelast(),在cookie中我们拿到的value值是字符串,把字符串转换成集合的话我们可以借助Arrays工具类的asList()方法,它会把数据转化为一个collection的集合,但是由于不知道是是具体那种集合,所有得用linkedList的构造方法把这个collection接口转换为linkedList。
1.1 首先判断指定的cookie存不存在
1.1.1
假如不存在
则直接把拿到的id,添加到新创建的cookie中去,并且设置cookie的最大生命时间,响应给浏览器
假如存在
我们拿到cookie中的value值转换,完成后我们首先判断是否在我们规定范围内的数量,
是的话则判断是否重复,
有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位
没有的话则直接把id添加到linkedList的第一位
不是的话判断是否重复
有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位
没有的话则删除最后一位的id,并拿传入的id添加到linkedList的第一位
1.2 最后把linkedList转化为字符串,并且对相应内容做判断,判断是否是最后一位
是的话,则拼接的时间不添加分隔符
不是的话,则添加相应的分隔符号
把字符串添加到cookie中,并且设置cookie的最大生命时间,响应给到浏览器中去
代码如下:
Cookie newCookie = null;
Cookie[] cookies = request.getCookies();
String string = null;
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies;
if ("hist".equals(cookie.getName())) {
string = cookie.getValue();
break;
}
}
}
System.out.println(string);
if (cookies == null || string == null) {
newCookie = new Cookie("hist", commodityId);
newCookie.setMaxAge(1 * 30 * 24 * 60 * 60);
response.addCookie(newCookie);
} else {
String[] split = string.split(",");
LinkedList<String> linkedList = new LinkedList<>(Arrays.asList(split));
if (linkedList.size() < 3) {
if (linkedList.contains(commodityId)) {
linkedList.remove(commodityId);
linkedList.addFirst(commodityId);
} else {
linkedList.addFirst(commodityId);
}
} else {
if (linkedList.contains(commodityId)) {
linkedList.remove(commodityId);
linkedList.addFirst(commodityId);
} else {
linkedList.removeLast();
linkedList.addFirst(commodityId);
}
}
String str = "";
for (int i = 0; i < linkedList.size(); i++) {
if (i == linkedList.size() - 1) {
str += linkedList.get(i);
} else {
str += linkedList.get(i) + ",";
}
}
System.out.println(str);
newCookie = new Cookie("hist", str);
newCookie.setMaxAge(1*30*24*60*60);
response.addCookie(newCookie);
}
相关文章推荐
- Cookie:类似与保存用户浏览记录的例子
- 关于用户浏览商品的历史记录(cookie)
- cookie应用——显示用户浏览记录
- 使用Cookie和JSON记录用户最近浏览历史
- 利用Cookie实现用户浏览商品记录
- 《JavaWeb---利用cookie记录用户的历史浏览》
- jquery使用Cookie和JSON记录用户最近浏览历史
- 使用Cookie和JSON记录用户最近浏览历史
- cookie保存用户浏览记录
- cookie技术案例-用户浏览商品的记录
- 利用Cookie记录用户浏览的图片
- 使用cookie保存用户的浏览记录
- Cookie应用之用户上次访问时间、用户浏览记录(转)
- 记录用户的商品浏览记录(Linkedlist,删除cookie)
- jquery使用Cookie和JSON记录用户最近浏览历史
- Cookie应用之用户上次访问时间、用户浏览记录
- cookie记录用户的浏览商品的路径
- cookie知识,小应用:记住用户名;记录用户浏览记录
- Oct 08 使用Cookie和JSON记录用户最近浏览历史
- cookie 记录用户方位次数 //// 判断客户端浏览器禁用cookie否