博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaweb学习——session和Cookie实现购物车功能
阅读量:4977 次
发布时间:2019-06-12

本文共 7196 字,大约阅读时间需要 23 分钟。

1.创建Book类,实现对图书信息的封装。

package cn.it.sessionDemo.example1;import java.io.Serializable;/** * 该类实现对图书的封装 *  * @author 12428 * */public class Book implements Serializable {    private static final long serialVersionUID = 1L;    private String ID;    private String name;    public Book() {    }    public Book(String ID, String name) {        this.ID = ID;        this.name = name;    }    public String getID() {        return ID;    }    public void setID(String iD) {        ID = iD;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

2.创建一个BookDB类实现对图书类的操作

package cn.it.sessionDemo.example1;import java.util.Collection;import java.util.LinkedHashMap;import java.util.Map;/** * 该类实现数据库模拟 *  * @author 12428 * */public class BookDB {    private static Map
books = new LinkedHashMap
(); // 静态代码块在Java类被加载时执行,由于类只加载一次,应此静态代码块只执行一次。 static { books.put("1", new Book("1", "javaweb开发")); books.put("2", new Book("2", "jdbc开发")); books.put("3", new Book("3", "java基础")); books.put("4", new Book("4", "struts开发")); books.put("5", new Book("5", "spring开发")); } // 获得所有的图书 public static Collection
getAll() { return books.values(); } // 根据指定的ID获得图书 public static Book getBook(String ID) { return books.get(ID); }}

3.创建一个ListBookServlet类,用来显示可购买的图书信息。

package cn.it.sessionDemo.example1;import java.io.IOException;import java.io.PrintWriter;import java.util.Collection;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 该servlet是显示所有的图书列表。通过图书后面的购买连接可以把图书添加到购物车中 *  * @author 12428 * */@WebServlet("/ListBookServlet")public class ListBookServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public ListBookServlet() {        super();        // TODO Auto-generated constructor stub    }    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        Collection
books = BookDB.getAll(); out.write("本站的图书有:"); for (Book b : books) { // 将图书的id值作为参数传过去 String url = "/SessionDemo2/PurchaseServlet?id=" + b.getID(); out.write(b.getName() + "
点击购买
"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

4.创建一个实现购物车功能的servlet类

package cn.it.sessionDemo.example1;import java.io.IOException;import java.util.ArrayList;import java.util.List;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 javax.servlet.http.HttpSession;/** * 该servlet类是用于实现购物车功能,既将用户购买的东西作为session的属性值存进去,再重定向到 到已购买商品的也买你 *  * @author 12428 * */@WebServlet("/PurchaseServlet")public class PurchaseServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public PurchaseServlet() {        super();        // TODO Auto-generated constructor stub    }    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 获得用户的购买信息        String id = request.getParameter("id");        // 有些用户会直接访问这个Servlet,先判断访问时是否带有书的ID        if (id == null) {            // 如果Id为空,返回图书列表Servlet            String url = "/SessionDemo2/ListBookServlet";            response.sendRedirect(url);  //此处一定要返回,不然会出现错误            return;        }        // 获取购买的图书信息        Book book = BookDB.getBook(id);        // 创建session对象        HttpSession session = request.getSession();        // 从session中获得购物车对象        List
cart = (List
) session.getAttribute("cart"); // 判断session对象是否有cart这个属性,如果没有这个属性的话,集合cart的值应为空 if (cart == null) { // 没有cart属性,用户是首次购买,为用户创建一个购物车 cart = new ArrayList
(); // 将购物车对象添加到session对象中 session.setAttribute("cart", cart); } // 将商品放入购物车 cart.add(book); // 创建一个Cookie存放session的信息 Cookie cookie = new Cookie("JSESSION", session.getId()); cookie.setMaxAge(60 * 30); cookie.setPath("/SessionDemo2"); // 将cookie发送到客户端 response.addCookie(cookie); // 重定向到已购买商品的页面。 String url = "/SessionDemo2/CartServlet"; response.sendRedirect(url); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

5.创建一个展示用户购买信息的类

package cn.it.sessionDemo.example1;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@WebServlet("/CartServlet")public class CartServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public CartServlet() {        super();        // TODO Auto-generated constructor stub    }    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        // 变量cart引用用户的购物车        List
cart = null; // 创建一个变量是来判断用户是否购买过商品 boolean Flag = true; // 获得用户的session,如果没有查到也不创建新的session。 HttpSession session = request.getSession(false); // 如果session为空,Flag为false; if (session == null) { Flag = false; } else {
// 不为空,就获得用户的购物车 cart = (List
) session.getAttribute("cart"); // 如果用户的购物车为空,就设置Falg为false。 if (cart == null) { Flag = false; } } // 如果Flag为false,表明用户没有购买过商品,重定向到ListServlet页面。 if (!Flag) { out.write("对不起,你没有购买任何商品"); } else { // 显示用户的购买信息 out.write("你购买的商品有:"); for (Book b : cart) { out.write(b.getName() + "
"); } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

 

转载于:https://www.cnblogs.com/zhilili/p/10874754.html

你可能感兴趣的文章
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>
IDEA使用操作文档
查看>>
UIView
查看>>
添加日期选择控件
查看>>
bzoj4765: 普通计算姬 (分块 && BIT)
查看>>
看完漫画秒懂区块链
查看>>
Oracle命令类别
查看>>
stc12c5a60s2驱动TEA5767收音机模块硬件调试总结
查看>>
vue中提示$index is not defined
查看>>
css选择器
查看>>