`
375809600
  • 浏览: 153824 次
  • 来自: 湖北
社区版块
存档分类
最新评论

cookie的使用,并用cookie实现购物车功能

阅读更多

大型网站一般都用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
0
2
分享到:
评论

相关推荐

    Cookie的使用及保存中文并用Cookie实现购物车功能

    设置Cookie 代码如下: //设置cookie Cookie cookie = new Cookie(“TOM”,”111″); //设置有效期,默认秒为单位 cookie. setMaxAge(7*24*60*60); //添加cookie到客户端 response.addCookie(cookie); 获取Cookie ...

    jquery.cookie实现的客户端购物车操作实例

    以上内容展示了如何使用jquery.cookie操作cookie来实现客户端购物车的增加、删除、修改等基本功能。该实例可以帮助开发者理解客户端购物车在实际应用中的实现原理,并能够在项目中进行相应的开发实践。

    cookie的使用,实用的demo

    当用户再次访问同一网站时,浏览器会自动将Cookie回传到服务器,从而实现识别用户身份的功能。Cookie主要用于存储用户登录状态、购物车信息等临时数据。 Session则是服务器端用来跟踪用户会话的一种技术。当用户...

    C# ASP.NET 模块 - 购物车模块

    数据库设计要考虑性能和扩展性,例如,购物车数据可能需要临时存储在Session或Cookie中,以处理会话持久性和并发问题。 6. **安全性**: 在开发过程中,必须考虑数据安全和用户隐私保护。例如,对用户输入进行验证...

    购物网站加入购物车产品展示代码.zip

    在实际应用中,这套代码可能还会涉及其他技术,如本地存储(localStorage或sessionStorage)用于在用户会话期间保存购物车数据,或者使用cookie进行持久化存储。另外,考虑到响应式设计,可能还需要利用媒体查询(@...

    Asp.Net购物车

    在Asp.Net 2.0中,这通常通过使用服务器控件如Button或LinkButton实现,点击后触发事件,将商品ID和数量等信息存储在Session对象中,或者使用数据库或Cookie进行持久化。 2. **商品展示**:购物车页面需要显示已...

    PHP实例开发源码—Ajax物品拖动的购物车 PHP+MySQL版.zip

    在这个实例中,可能使用了jQuery的`draggable()`和`droppable()`方法来实现拖放功能,并用`$.ajax()`方法发送Ajax请求。 4. **MySQL**:MySQL是一个流行的开源关系型数据库管理系统,用于存储和管理项目中的商品和...

    网上购物网站设计与实现

    用户模块涉及注册、登录和个人信息管理,需要利用ASP的Session和Cookie技术来实现用户的会话跟踪和状态保持。商品展示模块则需通过数据库查询技术,如SQL,从后台数据库获取商品信息,并用ASP动态生成网页。 接下来...

    asp商业网站留言板以及订单提交功能

    1. 用户选择商品后,ASP可以用来跟踪购物车状态,存储在session或cookie中。 2. 用户提交订单时,ASP脚本会处理订单信息,包括收货地址、支付方式、商品列表等。 3. 数据验证是必要的,ASP可以检查输入的有效性,...

    网上书店(设计及源代码)

    8. **购物车**:购物车的实现包括添加、删除商品,修改商品数量等功能。这部分需要处理用户的交互,同时保持购物车内容在用户会话期间的一致性。 9. **帮助中心**:帮助中心为用户提供常见问题解答、联系信息等,...

    jQuery外卖点菜购物车代码

    jQuery外卖点菜购物车代码是一种实现在线餐饮订购系统中常见功能的前端脚本,它基于JavaScript库jQuery 1.10.2版本构建。在这个系统中,用户可以选择菜品并将其添加到购物车,购物车会实时计算总价,并提供清空...

    购物静态网站

    6. **购物车功能**:虽然不是动态数据库驱动,但可以通过本地存储或Cookie实现简单的购物车功能,记录用户选择的商品。 7. **支付集成**:静态网站通常会集成第三方支付服务,如PayPal、Alipay或WeChat Pay,以处理...

    恭喜您下载超牛X购物网站系统

    【超牛X购物网站系统】是一款实用的在线购物平台,主要基于ASP编程语言构建,用于实现网络购物功能。这个系统提供了完整的电子商务解决方案,包括商品展示、用户注册与登录、购物车管理、订单处理以及支付接口集成等...

    onLineShopping

    购物车数据可以存储在cookie或session中,实现购物体验的连续性。 4. 订单模块:订单创建、支付处理、订单状态跟踪。这里可能涉及到与第三方支付平台的接口对接,如支付宝或微信支付,同时需要处理订单状态的更新和...

    ASP毕业设计——asp图书出售图书发行系统(源代码+论文).zip

    6. **状态管理**:购物车和用户登录状态通常需要使用Cookie或Session来跟踪,确保用户在浏览过程中的状态得以保持。 7. **安全性**:考虑到是毕业设计,可能对安全性的处理相对基础,但实际应用中需要防止SQL注入、...

    基于PHP的宾馆管理系统(含数据库文件).zip

    7. session与cookie:学习如何使用session和cookie来管理用户会话,例如登录状态的保持、购物车功能等。 8. 安全性:了解如何对用户输入进行过滤和转义,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等安全威胁...

    php下使用无限生命期Session的方法

    对于没有服务器操作权限的情况,可以通过编程方式更改Session ID并使用持久性Cookie来达到相同效果。关键步骤包括: - 使用`session_id()`函数手动设置Session ID。 - 创建一个持久性Cookie来存储新的Session ID。 ...

    商城类完整demo:DFS:前端、PHP后端_商城小程序_商城demo源码_商城前端+后端_商城源码_DEMO_源码

    - **Session和Cookie管理**:为了实现用户状态的保持,PHP可能涉及到Session和Cookie的管理,确保用户登录状态和购物车信息的正确处理。 3. **架构设计**: - **MVC模式**:项目可能采用了Model-View-Controller...

    PHP的网上书店系统.rar

    可能使用PHP的数组和循环来遍历数据库中的图书记录,并用HTML和CSS呈现出来。 3. 购物车模块:允许用户添加、删除书籍,查看购物车内的商品。这里会涉及到session或cookie技术来跟踪用户的选择。 4. 订单处理模块...

Global site tag (gtag.js) - Google Analytics