cookie的案例最近浏览的书
2013-10-02 16:33
176 查看
一步:建一个书的数据库,用静态代码块实现,这样可以随在类一加载后就在内存中,不用随着构造函数每次都加载。
要list所有书的方法,还有根据Id查询书的方法
private static HashMap<String, Book> bookMap = new HashMap<String, Book>();
static{
bookMap.put("1", new Book("1","西游记",998.0,"朴乾","一个和尚一头猪,一只猴子一个河童和一批马的故事"));
bookMap.put("2", new Book("2","水浒传",8.0,"刘德华","105个男人和3个女人的混乱的故事"));
bookMap.put("3", new Book("3","三国演义",98.0,"方老师","打来大去没完没了"));
bookMap.put("4", new Book("4","红楼梦",998.0,"郭富城","乱七八糟的故事"));
bookMap.put("5", new Book("5","金瓶梅",88.0,"武二郎","卖烧饼的故事"));
}
/**
* 获取所有书信息的方法
*/
public static HashMap<String, Book> getBookList(){
return bookMap;
}
/**
* 根据id获取书的方法
*/
public static Book getBook(String id){
return bookMap.get(id);
}
二部:遍历书在浏览器里展示
点击查看书的详细
展示浏览过的书
public class BookList extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//1.查询数据库获取书的信息
Map<String,Book> map = BookDao.getBookList();
//2.将书打印给浏览器
for(Map.Entry<String, Book> entry : map.entrySet()){
Book book = entry.getValue();
response.getWriter().write("<a href='"+request.getContextPath()+"/servlet/BookInfo?id="+book.getId()+"'>"+book.getName()+"</a><br>");
}
//3.打印经常看过的书
response.getWriter().write("<hr>曾今看过的书:<br>");
Cookie [] cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){
response.getWriter().write("您还没有看过任何书!");
}else{
String [] ids = findC.getValue().split(",");
for(String id : ids){
Book book = BookDao.getBook(id);
response.getWriter().write(book.getName()+"<br>");
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
三步:获取要查看书的Id
判读是否存在cookie的ID
如果没有则创建一个
如果有则,把书的id加入cookie值里面去。
public class BookInfo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置字符码
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//1.获取当前要查询的书的详细信息
String id = request.getParameter("id");
Book book = BookDao.getBook(id);
//2.将详细信息打给浏览器展示
response.getWriter().write("<h1>书名:"+book.getName()+"</h1><hr>");
response.getWriter().write("<h3>作者:"+book.getAuth()+"</h3><br>");
response.getWriter().write("<h3>售价:"+book.getPrice()+"</h3><br>");
response.getWriter().write("<h3>详细信息:"+book.getDesc()+"</h3><br><hr>");
//3.写回一个cookie,last,保存最后看过的书
Cookie lastC = new Cookie("last","");
lastC.setPath(request.getContextPath());
lastC.setMaxAge(3600*24*30);
//--先获取之前看过的书,再拼接当前看的书,由此得到最后看过的三本书,最主要的思想:把cookie的值清空,重新赋值。
Cookie [] cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){//之前没有看过别的书,则cookie里只放当前看的书的id即可
lastC.setValue(book.getId()+"");
}else{//有之前看过书的信息,则要进行计算,计算出最后看的三本书,输出
//1 -->2,1--> 2,1
//2,1-->3,2,1-->3,2,1
//3,2,1-->4,3,2-->4,3,2
//3,2,1-->2,3,1-->2,3,1
String [] infos = findC.getValue().split(",");
StringBuffer buffer = new StringBuffer();
buffer.append(book.getId()+",");
int count = 0;
for(int i=0;i<infos.length && count<2;i++){
if(!infos[i].equals(book.getId())){
buffer.append(infos[i]+",");
count++;
}
}
String info = buffer.substring(0, buffer.lastIndexOf(",")).toString();
//给cookie的值赋值
lastC.setValue(info);
}
response.addCookie(lastC);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
要list所有书的方法,还有根据Id查询书的方法
private static HashMap<String, Book> bookMap = new HashMap<String, Book>();
static{
bookMap.put("1", new Book("1","西游记",998.0,"朴乾","一个和尚一头猪,一只猴子一个河童和一批马的故事"));
bookMap.put("2", new Book("2","水浒传",8.0,"刘德华","105个男人和3个女人的混乱的故事"));
bookMap.put("3", new Book("3","三国演义",98.0,"方老师","打来大去没完没了"));
bookMap.put("4", new Book("4","红楼梦",998.0,"郭富城","乱七八糟的故事"));
bookMap.put("5", new Book("5","金瓶梅",88.0,"武二郎","卖烧饼的故事"));
}
/**
* 获取所有书信息的方法
*/
public static HashMap<String, Book> getBookList(){
return bookMap;
}
/**
* 根据id获取书的方法
*/
public static Book getBook(String id){
return bookMap.get(id);
}
二部:遍历书在浏览器里展示
点击查看书的详细
展示浏览过的书
public class BookList extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//1.查询数据库获取书的信息
Map<String,Book> map = BookDao.getBookList();
//2.将书打印给浏览器
for(Map.Entry<String, Book> entry : map.entrySet()){
Book book = entry.getValue();
response.getWriter().write("<a href='"+request.getContextPath()+"/servlet/BookInfo?id="+book.getId()+"'>"+book.getName()+"</a><br>");
}
//3.打印经常看过的书
response.getWriter().write("<hr>曾今看过的书:<br>");
Cookie [] cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){
response.getWriter().write("您还没有看过任何书!");
}else{
String [] ids = findC.getValue().split(",");
for(String id : ids){
Book book = BookDao.getBook(id);
response.getWriter().write(book.getName()+"<br>");
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
三步:获取要查看书的Id
判读是否存在cookie的ID
如果没有则创建一个
如果有则,把书的id加入cookie值里面去。
public class BookInfo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置字符码
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//1.获取当前要查询的书的详细信息
String id = request.getParameter("id");
Book book = BookDao.getBook(id);
//2.将详细信息打给浏览器展示
response.getWriter().write("<h1>书名:"+book.getName()+"</h1><hr>");
response.getWriter().write("<h3>作者:"+book.getAuth()+"</h3><br>");
response.getWriter().write("<h3>售价:"+book.getPrice()+"</h3><br>");
response.getWriter().write("<h3>详细信息:"+book.getDesc()+"</h3><br><hr>");
//3.写回一个cookie,last,保存最后看过的书
Cookie lastC = new Cookie("last","");
lastC.setPath(request.getContextPath());
lastC.setMaxAge(3600*24*30);
//--先获取之前看过的书,再拼接当前看的书,由此得到最后看过的三本书,最主要的思想:把cookie的值清空,重新赋值。
Cookie [] cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){//之前没有看过别的书,则cookie里只放当前看的书的id即可
lastC.setValue(book.getId()+"");
}else{//有之前看过书的信息,则要进行计算,计算出最后看的三本书,输出
//1 -->2,1--> 2,1
//2,1-->3,2,1-->3,2,1
//3,2,1-->4,3,2-->4,3,2
//3,2,1-->2,3,1-->2,3,1
String [] infos = findC.getValue().split(",");
StringBuffer buffer = new StringBuffer();
buffer.append(book.getId()+",");
int count = 0;
for(int i=0;i<infos.length && count<2;i++){
if(!infos[i].equals(book.getId())){
buffer.append(infos[i]+",");
count++;
}
}
String info = buffer.substring(0, buffer.lastIndexOf(",")).toString();
//给cookie的值赋值
lastC.setValue(info);
}
response.addCookie(lastC);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
相关文章推荐
- 利用cookie实现查看最近浏览
- 淘宝浏览足迹功能实现(含代码)--cookie案例
- cookie 最近浏览记录(中文escape转码)
- JavaWeb---Cookie---浏览图片---显示最近浏览图片
- cookie实例-最近浏览记录
- 利用COOKIE实现最近浏览商品
- 使用localStorage替代cookie做本地存储,例如最近浏览历史记录
- cookie案例:显示商品浏览历史
- cookie保存最近浏览的商品
- 最近浏览过的商品(保存到cookie)
- jquery使用Cookie和JSON记录用户最近浏览历史
- 【JavaWeb-7】Cookie记住用户名、历史浏览记录与Session的自动系列化、购物车案例、验证码使用
- jquery.cookie.js结合asp.net实现最近浏览记录
- Cookie案例-显示商品浏览历史纪录
- 使用Cookie和JSON记录用户最近浏览历史
- javaWeb_04-Cookie案例-显示商品浏览历史纪录
- jQuery.cookie.js实现记录最近浏览过的商品功能示例
- javaWEB总结(19):利用Cookie显示最近浏览的商品
- Servlet 4 JSP EL Cookie Session 商品浏览记录案例 购物车案例
- 使用Cookie和JSON记录用户最近浏览历史