大型网站一般都用cookie,因为session的会在客户端生成,是服务器压力增大,下面我来介绍一下,cookie的原理和使用
原理如图
使用方法:如如下代码demo1生成cookie,demo2获得cookie
demo1:
import java.io.IOException;
import java.util.Date;
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 CookieDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie cookie = new Cookie("lastTime", new Date().toLocaleString());
cookie.setMaxAge(60 * 60);
cookie.setValue(new Date().toLocaleString());
cookie.setPath(request.getContextPath());// 设置的是有效路劲,如果没有设置,那就表示当前路径
System.out.println(request.getContextPath());
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
demo2:
package com.itcast.servlet;
import java.io.IOException;
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 CookieDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cookie[] cookie = request.getCookies();
for (int i = 0; cookie != null && i < cookie.length; i++) {
if ("lastTime".equals(cookie[i].getName())) {
response.getWriter().write(cookie[i].getValue());
System.out.println(cookie[i].getValue());
} else if (cookie == null) {
response.getWriter().write("您是首次访问本站");
Cookie[] cookies = request.getCookies();
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
cookie普遍应用于购物车,是一个减缓服务器压力的好技术,下面我来用4个类为大家模拟一下买书购物功能:
1.书类javabean
package cn.itcast.cookie.javabean;
public class Book {
private String id;
private String name;
private String author;
private String price;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Book() {
super();
// TODO Auto-generated constructor stub
}
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 getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public Book(String id, String name, String author, String price) {
super();
this.id = id;
this.name = name;
this.author = author;
this.price = price;
}
}
2.书店的模拟类,一般用数据库,但是这里我们模拟一些数据:package cn.itcast.cookie.javabean;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class DB {
private static Map<String, Book> books = new LinkedHashMap<String, Book>();
public static Collection<Book> getAll() {
return books.values();
}
static {
books.put("1", new Book("1", "php实战", "老路", "hello"));
books.put("2", new Book("2", "android开发", "老徐", "110"));
books.put("3", new Book("3", "jdbc开发", "老黎", "106"));
books.put("4", new Book("4", "c++算法", "老方", "107"));
}
public static Book Findbook(String bookid) {
return books.get(bookid);
}
}
3.这个类,有两个功能,第一个,显示全部的书,第二个,在你买书后,刷新能显示你曾经浏览过的书
package com.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
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 cn.itcast.cookie.javabean.Book;
import cn.itcast.cookie.javabean.DB;
public class ListBookServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
request.getParameter("id");
// 获得商品
Collection<Book> books = DB.getAll();
// 显示商品
for (Book book : books) {
out.write("<a href='/day07_cookie/servlet/ShowBookInfo?id="
+ book.getId() + "'>" + book.getName() + "</a><br>");
}
String bookHistory = null;
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if ("BookHistory".equals(cookies[i].getName())) {
bookHistory = cookies[i].getValue();
break;
}
}
out.write("您浏览过的商品:</br>");
String[] strs = bookHistory.split("\\-");// 将获得的字符串拆分,获取里面的id,用来找到每一本书
for (int j = 0; j < strs.length; j++) {
System.out.println("strs[i]=" + strs[j]);
Book book = DB.Findbook(strs[j]);
out.write(book.getName() + "</br>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4.显示你购买商品的详细信息,并将你所有的购买的商品的id,拼接成一个1-2-3格式的字符串
package com.itcast.servlet;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
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 cn.itcast.cookie.javabean.Book;
import cn.itcast.cookie.javabean.DB;
public class ShowBookInfo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String id = request.getParameter("id");
Book book = DB.Findbook(id);
String BookHistory = makeBookHistory(request, book.getId());
response.getWriter().write(
"" + book.getName() + "</br>" + book.getAuthor() + "</br>"
+ book.getPrice() + "</br>");
Cookie cookie = new Cookie("BookHistory", BookHistory);
response.addCookie(cookie);
}
private String makeBookHistory(HttpServletRequest request, String id) {
Cookie[] cookies = request.getCookies();
String BookHistory = null;
for (int i = 0; cookies != null && i < cookies.length; i++) {
if ("BookHistory".equals(cookies[i].getName())) {
BookHistory = cookies[i].getValue();
break;
}
}
if (BookHistory == null) {
return id;
}
String[] strs = BookHistory.split("-");//如果前面获得的id不是null,将返回来的字符串拆分,获得所有的id,存到String[]中
List<String> list = Arrays.asList(strs);
LinkedList<String> ids = new LinkedList<String>();//添加到LinkedList,是为了能按照先后顺序显示
ids.addAll(list);
if (ids.contains(id)) {// 如果有,移除,并加到第一个
ids.remove(id);//
ids.addFirst(id);
}
if (ids.size() == 3) {//最多显示3个浏览过的商品,如果超过,就删除最后一个
ids.remove(ids.size() - 1);
} else {
ids.addFirst(id);
}
StringBuffer sb = new StringBuffer();
for (String str : ids) {//将所有的id,合并成一个1-2-3的字符串,因为一次只能储存一个数据,在cookie中,所以用这个来储存多个id
sb.append(str + "-");
}
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
- 大小: 23.2 KB
分享到:
相关推荐
cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车
COOKie实现购物车,通过读取COOKIE中的类容,绑定到DataTable中,然后很方便的绑定到GridView中
购物实现原代码与思路(cookie 与session两种实现方式)并实现思路说明,自已做B2C网站时写的 参考意义重大~~
cookie实现的购物车 帮助你认识COOKIE的强大
设置Cookie 代码如下: //设置cookie Cookie cookie = new Cookie(“TOM”,”111″); //设置有效期,默认秒为单位 cookie. setMaxAge(7*24*60*60); //添加cookie到客户端 response.addCookie(cookie); 获取Cookie ...
使用目前大部分购物网站都是用的cookie技术,实现了购物车从cookie中的详细实现,此购物车的最主要的功能是,用户每次在本地登录时会创建一个cookie文件,此文件保存了用户名和编号,作为下次登陆的凭证,另外还有一...
购物车\用Cookie实现的购物车\用Cookie实现的购物车购物车购物车\用Cookie实现的购物车
将商品添加到购物车Cookie中 创建要显示数据的Table 根据商品ID获取商品信息 将购物车中商品展示到GridView中 计算购物中商品总数量 计算购物车总金额
Javascript操纵Cookie实现购物车程序.txtJavascript操纵Cookie实现购物车程序.txt
同够创建Cookie实现购物车,可将商品ID号和商品购买数量添加到Cookie中,然后可以通过控件绑定Cookie中的商品信息,非常有用,
使用cookie机制实现商品的浏览历史记录功能 主要的实现思路就是通过每次点击商品查看信息的时候 传递一个商品编号 然后保存在cookie中 然后从cookie中取出来 去数据库执行相关的查询操作 之后再到页面上进行显示就ok...
利用cookie,封装成购物车类,支持事件。当用户点击添加到购物车时,自动向购物车里装入商品。并刷新构物栏。示例中也将cookie中的商品如何提取并展现给用户。所有都是以面向对象加json的思想
(1)使用session机制,保存用户状态(用户购买的商品)。 (2)为了方便对购买操作的处理(比如,购买商品、 删除已经购买的商品、查看已经购买的商品、计价等等), 设计一个Cart类,封装这些操作。Cart对象会...
Cookie应用于购物车,只供参考学习
jQuery用Cookie实现加入购物车带抛物线效果,因为要用cookie要在服务器(配置的本地环境)下运行,方便实用
购物实现原代码与思路(cookie 与session两种实现方式)并实现思路说明,自已做B2C网站时写的 参考意义重大~~
//创购物车cookie yxy .//sql8.net if (object.Equals(Request.Cookies["ztbscart"], null)) cookie = new HttpCookie("ztbscart"); else cookie = Request.Cookies["ztbscart"]; //判断是否已存在于购物车内 ...
PHP+COOKIE实现购物车类[强烈推荐]