您的位置:首页 > 编程语言 > Java开发

java 使用Cookie实现,浏览过商品记录

2017-10-02 22:20 561 查看

1.ProductDao类

public Product findProductByPid(String pid) throws SQLException {
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from product where pid=?";
return runner.query(sql, new BeanHandler<Product>(Product.class), pid);
}

2.ProductService类

//通过pid查找商品信息
public Product findProductByPid(String pid) {
try {
return productDao.findProductByPid(pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

3.FindProductInfoByPidServlet类

public class FindProductInfoByPidServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

private ProductService productService=new ProductService();

private CategoryService categoryService=new CategoryService();

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

this.doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String pid=request.getParameter("pid");
Product product= productService.findProductByPid(pid);
Category category= categoryService.findCategoryByCid(product.getCid()+"");
product.setCategory(category);
request.setAttribute("product", product);

String pids=pid;
//将pid放入cookie中
Cookie [] cookies=  request.getCookies();
if(cookies!=null){
for(Cookie cookie: cookies){
if("pids".equals(cookie.getName())){
//将值 3-2-8存放
pids=cookie.getValue();
String [] split= pids.split("-");
List<String> aslist=Arrays.asList(split);
LinkedList<String> list=new LinkedList<String>(aslist);
if(list.contains(pid)){
list.remove(pid);
list.addFirst(pid);
}else{
list.addFirst(pid);
}
StringBuffer sb=new StringBuffer();
for(int i=0;i<list.size();i++){
sb.append(list.get(i)).append("-");
}
sb.deleteCharAt(sb.length()-1);
pids=sb.toString();
}

}
}

Cookie  cookie=new Cookie("pids", pids);
response.addCookie(cookie);
request.getRequestDispatcher("product_info.jsp").forward(request, response);
}
}

4.FindProductByCategroyServlet类POST方法添加如下代码 展示浏览记录

//浏览记录
List<Product> historyList=new ArrayList<Product>();
Cookie [] cookies=request.getCookies();
if(cookies!=null){
for(Cookie cookie : cookies){
if("pids".equals(cookie.getName())){
String pids=cookie.getValue();
String [] splits=pids.split("-");
for (int i = 0; i < splits.length; i++) {
String pid=splits[i];
Product product= productService.findProductByPid(pid);
historyList.add(product);
}
}
}
}

request.setAttribute("historyList",historyList);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: