创建对象:用集合模拟数据库:创建一个简单的内容显示界面
package com.cn.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class Cookie1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.创建所有商品信息
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset = UTF-8");
PrintWriter out = response.getWriter();
out.print("");
out.print("所有的商品信息:
");
Map map = Db.getAll();
for(Map.Entry entry:map.entrySet()){
Goods goods = entry.getValue();
out.print(""+goods.getName()+"
");
}
out.print("");
//2.显示用户曾经浏览过的商品
out.print("你浏览过的商品为:
");
Cookie cookies[] = request.getCookies();
for(int i=0;cookies != null && i"+goods.getName()+"
");
}
}
}
}
/**
* The doPost method of the servlet.
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
class Db{
private static Map map = new LinkedHashMap();
static {
map.put("1",new Goods("1","红楼梦","曹雪芹","中国经典名著 "));
map.put("2",new Goods("2","javaweb开发","白光元","javaweb自学书籍"));
map.put("3",new Goods("3","西游记","吴承恩","中国经典名著"));
map.put("4",new Goods("4","童年","高尔基","俄国经典名著"));
map.put("5",new Goods("5","鲁滨逊漂流记","迪福","英国名著"));
map.put("6",new Goods("6","java核心技术","马志强","java教科书"));
map.put("7",new Goods("7","javaweb完全自学手册","宝柏","javaweb开发宝典"));
map.put("8",new Goods("8","动态网站开发","萧萧","javaweb书籍"));
}
public static Map getAll(){
return map;
}
}
class Goods{
private String id ;
private String name;
private String author;
private String description;
public Goods() {
super();
// TODO Auto-generated constructor stub
}
public Goods(String id, String name, String author, String description) {
super();
this.id = id;
this.name = name;
this.author = author;
this.description = description;
}
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 getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
创建cookie;利用返回id显示商品的信息,并且保存在cookie的集合中:最后通过遍历的得到最近浏览的商品;
package com.cn.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.LinkedList;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Cookie2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//根据用户带来的id,显示商品的详细信息
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String id =request.getParameter("id");
Goods goods = (Goods) Db.getAll().get(id);
out.write(goods.getId()+"
");
out.write(goods.getName()+"
");
out.write(goods.getAuthor()+"
");
out.write(goods.getDescription()+"
");
//构建cookie,回写给浏览器
String cookieValue = buildCookie(id,request);
Cookie cookie = new Cookie("goodsHistory",cookieValue);
cookie.setMaxAge(1*30*24*3600);
cookie.setPath("/Userinfo");
response.addCookie(cookie);
out.print("返回首页");
}
private String buildCookie(String id, HttpServletRequest request) {
String goodsHistory = null;
Cookie cookies[] =request.getCookies();
for(int i = 0;cookies!=null&&i list =new LinkedList(Arrays.asList(goodsHistory.split("\\,")));
if(list.contains(id)){
list.remove(id);
list.addFirst(id);
}else{
if(list.size()>=3){
list.removeLast();
list.addFirst(id);
}else{
list.addFirst(id);
}
}
StringBuilder sb =new StringBuilder();
for(String bid:list){
sb.append(bid+",");
}
return sb.deleteCharAt(sb.length()-1).toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}