上一篇博文中,讲到用cookie实现简单的购物车,但是有的用户,会因为不小心把cookie给禁止了,如果遇到这种情况,为了我不损失用户,那也是我们编程人员必须也能让用户感觉到,是在正常购物,下面我从原理讲起,到购物车案例
首先我教大家简单的session使用
下面先了解一下简单的使用方法Demo1创建session,并重定向到Demo2中
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Demo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("hello", "hello wolrd");
response.sendRedirect(request.getContextPath() + "/servlet/Demo2");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Demo2显示demo1带过来的session数据
package com.itcast.simple;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Demo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String hello = (String) session.getAttribute("hello");
response.getWriter().write(hello);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
简单的讲解,现在来实现,没有cookie的支持,怎么实现购物功能,这里我们用两个类来模拟数据
1.book类来封装书的属性
package cn.itcast.session.javabean;
public class Book {
private String id;
private String name;
private String author;
private String price;
package com.itcast.session.withoutcookie;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.itcast.session.javabean.Book;
import cn.itcast.session.javabean.DB;
public class BuyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Book book = DB.Findbook(id);//通过id找到书
System.out.println(id);
HttpSession session = request.getSession();
ArrayList list = (ArrayList) session.getAttribute("list");//第一次访问里面没有书
if (list == null) {
list = new ArrayList<Book>();
}
list.add(book);
session.setAttribute("list", list);
response.sendRedirect(request.getContextPath() + "/servlet/ListCart");//将url重写。使其带着sessionid数据传给ListCart
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
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.session.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.session.withoutcookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.session.javabean.Book;
import cn.itcast.session.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();
Collection<Book> all = DB.getAll();
for (Book book : all) {
System.out.println(book.getId());
out.write("<a href=/day07_sisson/servlet/BuyServlet?id="
+ book.getId() + ">" + book.getName() + "</a></br>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4.利用传过来的id,找到书,将书添加到list集合,然后存进session中,最后,将url重写,将session的数据,带到ListCart
package com.itcast.session.withoutcookie;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.itcast.session.javabean.Book;
import cn.itcast.session.javabean.DB;
public class BuyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Book book = DB.Findbook(id);//通过id找到书
System.out.println(id);
HttpSession session = request.getSession();
ArrayList list = (ArrayList) session.getAttribute("list");//第一次访问里面没有书
if (list == null) {
list = new ArrayList<Book>();
}
list.add(book);
session.setAttribute("list", list);
response.sendRedirect(request.getContextPath() + "/servlet/ListCart");//将url重写。使其带着sessionid数据传给ListCart
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
5.展示购物车里面的数据
package com.itcast.session.withoutcookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.itcast.session.javabean.Book;
public class ListCart extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
HttpSession session = request.getSession();
writer.write("您浏览过的商品</br>");
ArrayList<Book> list = (ArrayList<Book>) session.getAttribute("list");
for (Book book : list) {
System.out.println(book.getName());
writer.write(book.getName() + "</br>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
- 大小: 60.5 KB
分享到:
相关推荐
Cookie是一种在客户端存储数据的技术,ASP.NET购物车使用Cookie时,通常会为每个商品创建一个唯一的标识,并在用户浏览商品时将这些标识存储在Cookie中。当用户添加商品到购物车时,服务器会返回一个新的或更新的...
使用Session实现购物车** 在Java Web应用中,我们可以创建一个`ShoppingCart`类,包含商品ID、数量等属性,然后在用户添加商品到购物车时,将`ShoppingCart`对象存入Session。 ```java // 添加商品到购物车 ...
这里我们将深入探讨两种常见的实现购物车功能的技术:Cookie和Session。 首先,我们要理解Cookie和Session的基本概念。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并在用户下次访问同一网站时返回给...
总的来说,Cookie在实现购物车功能时提供了一种简单且实用的方法,但同时也存在一些限制和潜在的安全风险。开发者在实际应用中应根据需求和场景选择合适的技术来实现购物车功能,同时注意用户隐私保护。
- **读取Cookie**:在页面加载时,检查是否存在购物车Cookie,如果有,使用`getList`方法解析Cookie的值,恢复`List<MyCart>`。 - **展示购物车**:将解析后的`List<MyCart>`绑定到`DataTable`,进一步将其绑定到`...
在实际开发中,通常会结合使用Cookie和SESSION来优化购物车体验,例如,可以使用Cookie来临时存储用户未登录时的购物车,当用户登录后,再将Cookie中的购物车数据转移到与用户账户关联的SESSION中。 综上所述,...
本资源将介绍如何利用Session来实现一个购物车功能,特别地,这个购物车是通过链表结构来管理和维护商品信息。 购物车系统是电商网站的核心部分,它允许用户添加、删除和修改选购的商品。在ASP.NET中,由于HTTP协议...
### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 在现代Web应用开发中,理解和掌握会话管理和用户认证是至关重要的。本实验旨在通过一系列实际操作来帮助学生熟悉J2EE环境下Session和Cookie的工作...
**文件列表中的 "js+cookie购物车"** 这个文件很可能是包含示例代码的资源,包括 JavaScript 文件和可能的 HTML 模板,用于演示如何结合使用 JavaScript 和 Cookie 实现购物车功能。你可以下载并研究这些文件,以更...
### 使用Cookie实现购物车功能详解 #### 一、引言 在现代Web应用开发中,购物车是一个不可或缺的功能。为了使用户能够在不登录的情况下也能享受到添加商品至购物车的便捷,许多开发者选择使用Cookie来存储用户的...
下面将详细阐述Session购物车的工作原理、实现方法以及其优点和缺点。 **一、Session概念** Session是一种服务器端存储用户状态的技术。当用户访问网站并进行某些操作(如登录或添加商品到购物车)时,服务器会为该...
如果购物车内容过于庞大,可以考虑使用Session或服务器端存储。 7. **优化策略** - 为了提高性能和用户体验,可以考虑定期同步购物车数据到服务器,或者使用Ajax异步更新,避免用户每次操作都需刷新整个页面。 ...
虽然这个实现方式简化了许多实际项目中的复杂性,但它为初学者提供了一个了解`Session`工作原理和实现基本购物车功能的良好起点。在实际开发中,通常会结合数据库存储购物车信息,以支持更多功能,如持久化购物车、...
(1)使用session机制,保存用户状态(用户购买的商品)。 (2)为了方便对购买操作的处理(比如,购买商品、 删除已经购买的商品、查看已经购买的商品、计价等等), 设计一个Cart类,封装这些操作。Cart对象会...
### Session在JSP中的应用与实现 在Web开发中,`session`是一个非常重要的概念,尤其是在需要维护用户状态的应用场景中。...无论是实现用户登录还是购物车功能,掌握如何使用`session`都是必不可少的技能之一。
当用户访问网站时,服务器会为每个用户分配一个唯一的session ID,并将其存储在客户端(通常是cookie),然后通过这个ID识别和跟踪用户的会话数据。 在京东式购物车中,我们可能会遇到以下关键点: 1. **商品添加*...
总之,session购物车是Web开发中实现用户购物功能的重要手段,通过理解其工作原理和相关技术,我们可以更好地设计和实现网站的购物功能,提供更好的用户体验。对于初学者来说,分析和研究"SessionGWC"中的源代码是一...
在分析提供的标签“源码”和“工具”时,我们可以推断这篇博文可能深入讲解了ThinkPHP5框架内部关于Session和Cookie的实现原理,以及如何利用这些工具进行实际开发。作者可能还分享了一些调试技巧或最佳实践,帮助...
网上商城购物车实现原理,PHP+Mysql实现,包含使用Cookie和Session两种实现方式的源代码。使用前请先导入数据表备份到你的mysql数据库中,然后修改config.php文件中的数据库配置。供PHPer学习交流,有任何意见或建议...