利用cookie实现历史记录浏览:

由于是简单演示,所以直接用javabean 取代数据库了

数据存储类:

package com.dzq.dao;

import java.util.*;

import com.dzq.domain.BookBean;

public class BookDao {
private static Map<String, BookBean> bookMap=new LinkedHashMap<String, BookBean>();
private BookDao(){ }
static { bookMap.put("1", new BookBean("1","三国演义","99.0","肚肚","河马出版","那人的故事"));
bookMap.put("2", new BookBean("2","西御街","99.0","肚吱吱","河马出版","那人的故事"));
bookMap.put("3", new BookBean("3","疏忽转","99.0","肚吱子","河马出版","那人的故事"));
bookMap.put("4", new BookBean("4","啪啪啪","99.0","蔺泽春","河马出版","那人的故事")); }
public static Map<String,BookBean> getBooks(){
return bookMap;
}
public static BookBean getBook(String id){
return bookMap.get(id); }
}

  javaBean 类:

package com.dzq.domain;

import java.io.Serializable;

public class BookBean  implements Serializable{
private String id;
private String name;
private String price;
private String auth;
private String publish;
private String discribe; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getAuth() {
return auth;
}
public void setAuth(String auth) {
this.auth = auth;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this.publish = publish;
} public String getDiscribe() {
return discribe;
}
public void setDiscribe(String discribe) {
this.discribe = discribe;
}
public BookBean(){ }
public BookBean(String id, String name, String price, String auth,
String publish, String discribe) {
this.id = id;
this.name = name;
this.price = price;
this.auth = auth;
this.publish = publish;
this.discribe = discribe;
} }

  显示历史图书信息和图书概览的servlet

import java.io.IOException;
import java.util.Map; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.dzq.dao.BookDao;
import com.dzq.domain.BookBean; @WebServlet("/BookListServlet")
public class BookListServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//查询所有书并显示,
Map<String,BookBean> map=BookDao.getBooks();
for(Map.Entry<String, BookBean> entry:map.entrySet()){
BookBean book=entry.getValue();
response.getWriter().write("<a href='BookInfoServlet?id="+book.getId()+"'>"+book.getName()+"</a><br/>");
}
response.getWriter().write("<hr>");
//显示之前浏览的书
Cookie [] cs=request.getCookies();
Cookie findc=null;
if(cs!=null){
for(Cookie c:cs){
if("last".equals(c.getName())){
findc=c;
}
}
}
if(findc==null){
response.getWriter().write("没有看过任何书");
}else{
response.getWriter().write("你最后看过的书:<br>");
String[] ids=findc.getValue().split(","); for(String id:ids){
BookBean book=BookDao.getBook(id);
response.getWriter().write(book.getName()+"<br/>");
}
} } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

  显示详细图书信息的servlet

package com.dzq.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.dzq.dao.BookDao;
import com.dzq.domain.BookBean; @WebServlet("/BookInfoServlet")
public class BookInfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String id=request.getParameter("id");
BookBean book=BookDao.getBook(id);
if(book==null){
response.getWriter().write("找不到该书");
}else{ response.getWriter().write("<h1>书名:"+book.getName()+"<h1/>");
response.getWriter().write("<h3>作者:"+book.getAuth()+"<h3/>");
response.getWriter().write("<h3>价格:"+book.getPrice()+"<h3/>");
response.getWriter().write("<h3>出版社:"+book.getPublish()+"<h3/>");
response.getWriter().write("<h3>描述:"+book.getDiscribe()+"<h3/>");
}
//显示之前的书
String ids="";
Cookie [] cs=request.getCookies();
Cookie findc=null;
if(cs!=null){
for(Cookie c:cs){
if("last".equals(c.getName())){
findc=c;
}
}
}
if(findc==null){
//说明之前没看过书
ids+=book.getId();
}else{ //说明之前看过书
String[] olds=findc.getValue().split(",");
StringBuffer buffer=new StringBuffer();
buffer.append(book.getId()+",");
for(int i=0;i<olds.length&&buffer.toString().split(",").length<3;i++){
String old=olds[i];
if(!old.equals(book.getId())){
buffer.append(old+",");
}
}
ids=buffer.substring(0, buffer.length()-1);
} Cookie lastC=new Cookie("last", ids);
lastC.setMaxAge(3600*24*30);
lastC.setPath(request.getContextPath());
response.addCookie(lastC);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

  功能:显示历史浏览的三本书信息,并按照浏览顺序排序,最新浏览的排在最前面

20160328 javaweb Cookie 小练习的更多相关文章

  1. Cookie小案例-----记住浏览过的商品记录

    Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中非经常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能例如以下: 1, ...

  2. JavaWeb Cookie详解

    代码地址如下:http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http协 ...

  3. Javaweb Cookie机制

    Javaweb Cookie机制 一.前言 HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的,即使 HTTP1.1 支持持续连 ...

  4. JavaWeb:Cookie处理和Session跟踪

    JavaWeb:Cookie处理和Session跟踪 Cookie处理 什么是Cookie Cookie 是存储在客户端计算机上的文本文件,保留了各种跟踪信息.因为HTTP协议是无状态的,即服务器不知 ...

  5. 入门:JavaWeb Cookie

    总结: JavaWeb 利用Cookie 存储在本地用户名和密码,设置Cookie的生存时间. 两个页面,一个登陆页面,一个登陆后的页面,在登陆页面选择是否保存Cookie(保存Cookie,下次自动 ...

  6. cookie小栗子-实现简单的身份验证

    关于Cookie Cookie是一种能够让网站Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术. 用来保存客户浏览器请求服务器页面的请求信息,可以在HTTP返回 ...

  7. JavaWeb Cookie

    1. Cookie 1.1. Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器 ...

  8. JavaWeb -- Cookie应用实例 -- 购物历史记录

    1. 页面一:主页面                                         页面二: 详细显示页面   Demo2 负责页面一, 显示商品清单和历史记录 Demo3负责页面二 ...

  9. JavaWeb——Cookie,Session学习汇总

    什么是Cookie Cookie的作用 安全性能 Cookie的语法 Cookie注意细节 Cookie实例练习 什么是会话Session Session语法 Session与浏览器窗口的关系 ses ...

随机推荐

  1. CSS+DIV之强化background属性

    1.背景颜色属性(background-color),设定背景颜色=html中bgcolor属性.我来写一个红色背景的body,(也可以定义某个特定区域) 示例写法:body {} 2.背景图片属性( ...

  2. MongoDB实战开发 【零基础学习,附完整Asp.net示例】

    MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...

  3. CLR via C# 读书笔记 6-2 不同AppDomain之间的通信 z

    跨AppDomain通信有两种方式 1.Marshal By reference : 传递引用 2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝) ...

  4. HDU5653 Bomber Man wants to bomb an Array 简单DP

    题意:bc 77 div1 1003(中文题面) 分析:先不考虑将结果乘以 1e6. 设 dp[i] 为从前 i 个格子的状态可以获得的最大破坏指数. 那么我们可以枚举每个炸弹,该炸弹向左延伸的距离和 ...

  5. 查询显示MSSQL表结构 [转]

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  6. HUFFMAN 树

    在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码.哈夫曼编码是哈夫曼树的一个应用.哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码. 首先介绍什么 ...

  7. 自动计算label字体的高度和图片拉伸处理(封装成分类分享)

    自动计算label字体的高度和图片拉伸处理 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bo ...

  8. aix 文件大小相关查询

    一.aix中查看文件夹占用空间大小 du命令默认是显示当前目录下每个文件以及每个子目录以及下属文件的大小的 用du -sg 可看出当前文件夹的大小,包括文件夹下文件和文件夹(以G为单位):用du -s ...

  9. NOIP2015 运输计划(二分+LCA+差分)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 308  Solved: 208[Submit][Status] ...

  10. iOS真机调试——申请开发者证书

    申请开发者证书 知道了什么是证书,我们现在就开始申请证书了 1. 找到KeyChain钥匙串,在Mac应用里可以找到 2. 在钥匙串的菜单中选择从证书颁发机构请求证书,填写邮件地址,选择储存到磁盘,放 ...