数据流程:页面上是商品列表,点击<a href="productServlet">商品名</a>
==》跳转到自定义的servlet中进行处理,先得到请求的参数id;
==》获取所有cookies =requst.getCookies()方法。
==》根据名称查找cookie是否存在 。通过循环cookies for(Cookie c:cookies) if(c.getName().eques("product")) 来确定cookie是否为null
==》也就确定是否是第一次访问,如果是第一次访问,新建cookie对象 Cookie cookie=new Cookie("product",id); 回写cookie response.addCookie(cookie);
==》如果存在,先判断是否包含请求的商品编号 if(不包含) cookie.setValue(productIds + "," + id); 回写cookie response.addCookie(cookie);
<%@pageimport="utils.MyUtils"%>
<%@ page language ="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</ title>
<style type= "text/css">
.imga{
width:160px;
height:140px;
}
.imgb{
width:80px;
height:70px;
}
</style>
</head>
<body>
<img class="imga" src= "/JSP/img/1.jpg"><a href= "../product?id=1">手电筒 </a >
<img class="imga" src= "/JSP/img/2.jpg"><a href= "../product?id=2">电话</a >
<img class="imga" src= "/JSP/img/3.jpg"><a href= "../product?id=3">电视</a ><br />
<img class="imga" src= "/JSP/img/4.jpg"><a href= "../product?id=4">冰箱</a >
<img class="imga" src= "/JSP/img/5.jpg"><a href= "../product?id=5">手表</a >
<img class="imga" src= "/JSP/img/6.jpg"><a href= "../product?id=6">笔记本电脑 </a >
<hr>
<h3> 浏览记录</h3 >
<%
//获取request.cookie
Cookie[] cookies=request.getCookies();
Cookie cookie=MyUtils.getCookieByName(cookies, "product");
if(cookie!=null )
{
String values=cookie.getValue();
String [] ids=values.split( ",");
for(String id:ids)
{
%>
<img class ="imgb" src="/JSP/img/<%= id %> .jpg"><br />
<%
}
}
%>
</body>
</html>
package Cookie_Servlet;
import java.io.IOException;
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 utils.MyUtils;
/**
* 浏览记录后台
*
* @author sunyb
*
*/
public class ProductServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 1.获取请求参数 2.获取cookie数组;通过指定名查找自己定义 的coockie 3. 如果cookie为null 则说明是
* 第一次访问 4 .否则 不是第一次访问
*/
// 获取请求参数 目的,存入到cookie 中
String id = request.getParameter( "id");
// 先获取所有的cookie,查找指定名称的cookies数组
Cookie[] cookies = request.getCookies();
// 查找指定名称的cookie
Cookie cookie = MyUtils. getCookieByName(cookies, "product");
// 如果cookie==null,我第 一次访问,创建cookie,回写
if (cookie == null) {
// 我是第一次访问,创建cookie,回写
Cookie c = new Cookie( "product", id);
// 回写
response.addCookie(c);
} else {
// 如果不是第一次访问
// 获取cookie的value值 ,可能会为 1,2,3
String productIds = cookie.getValue();
String[] values = productIds.split( ",");
if (!checkId(values, id)) {
cookie.setValue(productIds + "," + id);
response.addCookie(cookie);
}
}
// 重定向到商品页面
response.sendRedirect( "/JSP/cookies/productList.jsp");
}
/**
* 判断当前的 id是否存在到cookies中
*
* @param ids
* cookies中存在的浏览过的商品id
* @param value
* 当前访问的商品id
* @return 包含到原来的cookies中返回true,否则返回false
*/
private boolean checkId(String[] ids, String value) {
for (String tem : ids) {
if (tem.equals(value))
return true;
}
return false;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
- Cookie实现商品浏览记录--方式二:JS实现
使用Cookie实现商品浏览记录:方式二:JS方法实现cookie的获取以及写入.当某一个产品被点击时,触发JS方法.利用JS方法判断一下,此产品是否在浏览记录中.如果不存在,则将产品ID加入到coo ...
- javaWeb 使用cookie显示商品浏览记录
package de.bvb.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date ...
- Cookie实现商品浏览记录--方式一:Java实现
方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ...
- Java遇见HTML——JSP篇之商品浏览记录的实现
一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...
- (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除
//JS实现顾客浏览商品的记录以及实现购物车的功能function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.s ...
- 利用COOKIE保存历史浏览商品的一个简单思路
<?php //如是COOKIE 里面不为空,则往里面增加一个商品ID if (!empty($_COOKIE['SHOP']['history'])){ //取得COOKIE里面的值,并用逗号 ...
- 使用cookies查询商品浏览记录
经历了俩个星期,易买网项目如期完工,现在总结一下如何使用cookies实现浏览商品的历史记录. 第一步:创建商品实体类. 第二步:连接oracle数据库. 第三步:创建商品三层架构. 效果图: 在要显 ...
- 使用cookie实现打印浏览记录的功能
可以用cookie知识来实现打印浏览记录.这里面用到的思路是将浏览记录以字符串的方式保存到cookie中,当浏览记录增加时,再将其转化为数组. $uri=$_SERVER['REQUEST_URI'] ...
- destoon系统开发-最新利用浏览器的cookie 做历史浏览记录
注意: 代码 放在要显示的为 (一般放在详情页),注意本教程不入库,直接利用浏览器的 cookie 缓存判断 <!--历史浏览记录 S--> <div class=&quo ...
随机推荐
- C#全角和半角转换
在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角".在汉字输入时,系统提供&quo ...
- title与h1标签的区别和联系
很多新站长在网站SEO过程中,会认为把H1等同于Title. 其实两是有区别和联系的,两者不能划等号.下面主要从文章和页面角度分析title和H1. H1等同于title吗? H1不等于title.H ...
- C# 多线程网络通信
博客园 :梦工厂2012 本月由于事情太多,没能有太多的时间去写博客.不过还好在月底抽时间写了这个多线程网络通信的程序 .程序说明:控制端 创建一个写线程threadWrite和一个读线程thread ...
- linux命令(11)下查看和添加环境变量
&PATH:决定了shell将到哪些目录中去寻找命令或者程序,PATH值是一系列的目录,当你要运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑PATH 声明,其格式为: PATH ...
- HTML5 编辑 API 之 Range 对象(一)
一.Range 对象基本概念 通过使用 Range 对象所提供的方法实现一个鼠标选取内容,通过点击按钮打印出选中内容,当然注意在不同的浏览器下可选中的内容数量是不同的. <!DOCTYPE h ...
- 转--Android按钮单击事件的四种常用写法总结
这篇文章主要介绍了Android按钮单击事件的四种常用写法总结,比较了常见的四种写法的优劣,有不错的参考借鉴价值,需要的朋友可以参考下 很多学习Android程序设计的人都会发现每个人对代码的 ...
- 【转】select和epoll模型的差异
http://www.cppblog.com/converse/archive/2008/10/12/63836.html epoll为什么这么快 epoll是多路复用IO(I/O Multiplex ...
- hadoop源代码解读
http://blog.csdn.net/keda8997110/article/details/8474349
- SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?(转)
如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了. 1.数据库中某个表中的数据很多.很多是什么概念?一万条?两万条?还是十万条.一百万条?这个,我觉得是仁者见仁.智者见 ...
- linux内核设计与实现--进程调度 系统调用
进程可以分为I/O消耗型和处理器消耗型. I/O消耗型指,进程的大部分时间用来提交I/O请求或者等待I/O请求. 处理器耗费型进程把时间大多用在执行代码上. linux采用了两种不同的优先级范围: 第 ...