20160328 javaweb Cookie 小练习

利用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);
	}

}

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

时间: 2024-09-30 15:19:39

20160328 javaweb Cookie 小练习的相关文章

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

Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中很常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能如下: 1,点击购买的商品后,显示到另一页面 2,记住用户浏览过的商品,并在页面时中显示 3,当浏览过的数量超过最大值限度时,最下面一个商品被挤下去 4,当浏览过的商品本身就在浏览记录中,显示列表将其从中间移到最上面 显示一打开网站的样子和显示用户的浏览记录: package cn.itcast.cookie; im

Cookie小案例

Cookie小案例: 1记住用户最后一次的访问时间 2记住用户登录时的用户名 // 1利用Cookie技术,记住用户上次访问的时间 public class ShowLastAccessTimeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepti

JavaWeb:Cookie和Session

JavaWeb:Cookie和Session Cookie处理 什么是Cookie Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息.Java Servlet 显然支持 HTTP Cookie. 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie.例如:姓名.年龄或识别号码等. 浏览器将这些信息存储在本地计算机上,以备将来使用. 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户.

javaWeb开发小工具---MailUtils及其单元测试

本次介绍的是,在javaWeb开发中,我们不免会遇到发送邮件的需求,比如:用户注册账号,需要激活登录,以及服务器定期向会员发送礼品信息等.所以参考有关资料,写了这个MailUtils工具类. 1.MailUtils的概述 这个MailUtils工具类底层使用了javax.mail包里面的API.所以我们要导入依赖的jar包----mail.jar和activation.jar两个jar包. 一封邮件基本由发件人.收件人.抄送人(可选).标题.正文.附件组成.这里我们要介绍的是邮件的发送. 在这个

cookie小析

cookie用于存储数据,当用户访问了某个网站(网页)时,我们就可以通过cookie来向访问者电脑上存储数据1.不同的浏览器存放的cookie位置不同,也不能通用2.cookie的存储是以域名的形式进行区分的3.cookie的数据可以设置和读(设置:document.cookie='名字=值':读取:document.cookie)4.一个域名下存放的cookie的个数是有限制的,不同浏览器存放的个数是不一样的5.每个cookie存放的内容大小也是由限制的,不同浏览器存放大小不一样 我们通过do

黑马day05 Cookie小案例&amp;记录上次访问的图书

1.建立一个javaBean Book package cn.itheima.domain; import java.io.Serializable; public class Book implements Serializable{ private String id; private String name; private String description; private String author; private String price; public Book(){} pu

MyEclipse开发JavaWeb的小问题解决

============================================================ 1.MyEclipse2017中创建web项目后,缺少web.xml配置文件的解决办法? 法一:没有web.xml是因为在创建web项目时,在选项中没有选中web.xml文件.web.xml选项在第三页,新建 JavaWeb工程 → next → next(web.xml).选中第二个选项即可.如下图所示: 法二:手动添加web.xml 该怎么做呢?右键项目,点击 java

javaweb闲暇小程序之抽签程序

学自潭州学院视频 主程序页面截图 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/

javaWeb开发小工具--MyCommonUtils

MyCommonUtils 参考一些资料,写了这个工具类.在这个工具类中,主要实现了2个方法: 1.生成随机的序列号 uuid(): 2.将Map中的数据封装到javaBean对象中toBean(Map map,Class<T> clazz): 编辑器:MyEclipse 10.0 1.依赖的jar包: 2.目录结构及日志文件的配置: 日志文件:log4j.properties 1 log4j.rootLogger=INFO, stdout, R 2 3 #\u5C06\u65E5\u5FD7