cookie技术案例-用户浏览商品的记录
2014-05-19 17:13
513 查看
项目名称:/cookieDemo2Record
需求:
模拟用户在网上商城,浏览商品,同时显示商品的浏览记录
1.查询所有商品页面-index.jsp/index.html
a.查询所有商品的按钮-----FindAllBooksServlet.java-com.ghsy.servlet
2.显示商城的商品
a.用bean存储商品-com.ghsy.domain
b.db包中的方法构造商品数据-com.ghsy.db
c.用jsp页面显示商品的信息-show.jsp
1.用表格列表的方式显示商品的信息。
2.表格的最后一个字段,添加查询详情----FindBookByIDServlet.java-com.ghsy.servlet
3.查询缓存,显示已经查看过的列表在所有商品信息的下方
3.记录查询记录
a.点击查询详情按钮,显示商品的详细信息--showDetial.jsp
b.保存已经查询过的商品信息到缓存中
缓存的选择-cookie
c.在显示商品的详情页,添加返回按钮,返回所有商品列表页
d.回到商品列表页(回到上面的2,所以2中需要添加获取缓存信息,并显示)
项目目录结构:
项目源码:
index.jsp
show.jsp
showdetails.jsp
BookDB.java
Book.java
FindAllBookServlet.java
FindBookByIdServlet.java
需求:
模拟用户在网上商城,浏览商品,同时显示商品的浏览记录
1.查询所有商品页面-index.jsp/index.html
a.查询所有商品的按钮-----FindAllBooksServlet.java-com.ghsy.servlet
2.显示商城的商品
a.用bean存储商品-com.ghsy.domain
b.db包中的方法构造商品数据-com.ghsy.db
c.用jsp页面显示商品的信息-show.jsp
1.用表格列表的方式显示商品的信息。
2.表格的最后一个字段,添加查询详情----FindBookByIDServlet.java-com.ghsy.servlet
3.查询缓存,显示已经查看过的列表在所有商品信息的下方
3.记录查询记录
a.点击查询详情按钮,显示商品的详细信息--showDetial.jsp
b.保存已经查询过的商品信息到缓存中
缓存的选择-cookie
c.在显示商品的详情页,添加返回按钮,返回所有商品列表页
d.回到商品列表页(回到上面的2,所以2中需要添加获取缓存信息,并显示)
项目目录结构:
项目源码:
index.jsp
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="/cookieDemo2Record/FindAllBooksServlet">查询所有</a> </body> </html>
show.jsp
<%@page import="java.util.HashMap"%> <%@page import="com.ghsy.domain.Book"%> <%@page import="java.util.Map"%> <%@ 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> </head> <body> <h3>所有商品信息</h3> <table border="1"> <tr> <td>编号</td> <td>书名</td> <td>作者</td> <td>价格</td> <td>详情</td> </tr> <% Map<String,Book> bookMap=(Map<String,Book>)request.getAttribute("bookMap"); for(Map.Entry<String,Book> entry:bookMap.entrySet()){ Book book=entry.getValue(); %> <tr> <td><%=book.getId() %></td> <td><%=book.getTitle() %></td> <td><%=book.getAnthor() %></td> <td><%=book.getPrice() %></td> <td><a href="/cookieDemo2Record/FindBookByIDServlet?id=<%=book.getId()%>">点击详情</a></td> </tr> <% } %> </table> <h3>浏览的商品记录:</h3> <% String bookCacheIds=null; Cookie[] cookies=request.getCookies(); if(cookies!=null){ for(Cookie cookie:cookies){ if("bookCacheIds".equals(cookie.getName())){ bookCacheIds=cookie.getValue(); System.out.println("已经查询过的商品的id"+bookCacheIds); out.print("<br>"+bookCacheIds+"<br>"); } } } %> </body> </html>
showdetails.jsp
<%@page import="com.ghsy.domain.Book"%> <%@ 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> </head> <body> <h3>详细信息:</h3> <% Book book=(Book)request.getAttribute("book"); %> <table> <tr> <td><%=book.getId() %></td> <td><%=book.getTitle() %></td> <td><%=book.getAnthor() %></td> <td><%=book.getPrice()%></td> <td>是有那么一堆的描述是不是啊,给力的</td> </tr> <a href="/cookieDemo2Record/FindAllBooksServlet">返回</a> </table> </body> </html>
BookDB.java
package com.ghsy.db; import java.util.HashMap; import java.util.Map; import com.ghsy.domain.Book; //需要提高一个能力---如何选择数据结构 public class BookDB { //选择Map来存储信息 key,value:id, public static Map<String, Book> bookMap=new HashMap<String, Book>(); //static 代码区域模拟商品的数据信息 static{ bookMap.put("p001", new Book("p001", "java", "leon", "98")); bookMap.put("p002", new Book("p002", "android", "胡玉勉", "98")); bookMap.put("p003", new Book("p003", "c#", "刘德华", "76")); bookMap.put("p004", new Book("p004", "object c", "藏学有", "87")); } //获得所有模拟数据的信心 public static Map<String, Book> getData(){ return bookMap; } //根据编号查询book的详细信息 public static Book findBookByID(String id){ Book book=null; for(Map.Entry<String, Book> entry:bookMap.entrySet()){ if(id.equals(entry.getValue().getId())){ book=entry.getValue(); } } return book; } }
Book.java
package com.ghsy.domain; public class Book { private String id; private String title; private String anthor; private String price; public Book() { super(); // TODO Auto-generated constructor stub } public Book(String id, String title, String anthor, String price) { super(); this.id = id; this.title = title; this.anthor = anthor; this.price = price; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAnthor() { return anthor; } public void setAnthor(String anthor) { this.anthor = anthor; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } }
FindAllBookServlet.java
package com.ghsy.servlet; import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ghsy.db.BookDB; import com.ghsy.domain.Book; public class FindAllBooksServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //test System.out.println("doGet() FindAllBooksServlet "); //获取所有商品信息 Map<String,Book> bookMap=BookDB.getData(); //request 对象存储book信息,跳转到另一个servlet(show.jsp页面)---共享数据操作 //直接将bookMap存储。 request.setAttribute("bookMap", bookMap); //跳转 request.getRequestDispatcher("show.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
FindBookByIdServlet.java
package com.ghsy.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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.ghsy.db.BookDB; import com.ghsy.domain.Book; /** * Servlet implementation class FindBookByIDServlet */ public class FindBookByIDServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet FindBookByIDServlet"); String id=request.getParameter("id"); System.out.println("所查询商品的详情id:"+id); Book book=BookDB.findBookByID(id); //request 属性存储信息 request.setAttribute("book", book); //对已经查询过的商品详情保存到cookie中 //#1.获取本次请求的对应cookie;有可能是第一次访问,没有cookie哦 Cookie[] cookies=request.getCookies(); String bookCacheIds=null; if(cookies!=null){ for(Cookie cookie:cookies){ if("bookCacheIds".equals(cookie.getName())){ bookCacheIds=cookie.getValue(); break; } } } //#2指定顺序 拼写所有id List<String> idsList = new ArrayList<String>(); idsList.add(id);//首先添加当前的id // #2.1 将cookie缓存数据使用逗号分隔 if(bookCacheIds != null){ String[] cookieIds = bookCacheIds.split(", "); for(String tempid : cookieIds){ if(!tempid.equals(id)){ //当前商品id已经在第一位 idsList.add(tempid); } } } //将cookie缓存,并发送了浏览器端 String idsStr=idsList.toString(); System.out.println(idsStr); Cookie cookie=new Cookie("bookCacheIds",idsStr.substring(1, idsStr.length()-1)); cookie.setPath("/"); response.addCookie(cookie); //跳转到详细信息页面 request.getRequestDispatcher("/showDetails.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
相关文章推荐
- Cookie技术案例-——显示曾经浏览过的商品
- cookie案例之显示用户上次浏览过的商品
- Servlet 4 JSP EL Cookie Session 商品浏览记录案例 购物车案例
- JavaWeb的Cookie技术显示历史商品( 信息 )浏览记录(学习方立勋老师的教程)
- cookie记录用户的浏览商品的路径
- 使用cookie技术实现大型网站购物网站的商品浏览记录
- 利用Cookie实现用户浏览商品记录
- Cookie小案例-----记住浏览过的商品记录
- 记录用户的商品浏览记录(Linkedlist,删除cookie)
- 关于用户浏览商品的历史记录(cookie)
- Cookie小案例-----记住浏览过的商品记录
- Oct 08 使用Cookie和JSON记录用户最近浏览历史
- 用Cookie实现商品浏览记录
- javaWeb_04-Cookie案例-显示商品浏览历史纪录
- Session案例,显示商品浏览记录
- Cookie案例-显示商品浏览历史纪录
- 【Cookie:默认存储在浏览器的内存中】显示上一次访问时间、商品浏览记录
- 利用cookie显示商品的浏览记录
- cookie知识,小应用:记住用户名;记录用户浏览记录
- 利用Cookie显示商品浏览历史记录