使用Session和cookie会话对象实现简单购物车功能(超详细)

这篇具有很好参考价值的文章主要介绍了使用Session和cookie会话对象实现简单购物车功能(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、新建项目、实体类、servlet

1.新建Dynamic Web project,新建过程如下;
使用Session和cookie会话对象实现简单购物车功能(超详细)
2.在src目录下新建两个包,一个命名为entity,一个命名为servlet,新建过程如下;
使用Session和cookie会话对象实现简单购物车功能(超详细)
3.在entity目录下新建两个实体类,一个名为Cake,一个名为CakeDB,新建过程如下:使用Session和cookie会话对象实现简单购物车功能(超详细)
4.在servlet目录下新建三个servlet,命名分别为ListCakeServlet、PurchaseServlet和CartServlet,新建过程如下:
使用Session和cookie会话对象实现简单购物车功能(超详细)
所有东西建完后结果如图:
使用Session和cookie会话对象实现简单购物车功能(超详细)

二:源代码

1.Cake实体类:

package entity;

public class Cake {
	private String id;
	private String name;
	
	public Cake() {
	}
	public Cake(String id, String name) {
		this.id = id;
		this.name = name;
	}
	
	public void setId(String id) {
		this.id=id;
	}
	public String getId() {
		return id;
	}
	
	public void setName(String name) {
		this.name=name;
	}
	public String getName() {
		return name;
	}
}

2.CakeDB实体类:

package entity;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class CakeDB {
	private static Map<String, Cake> cake = new LinkedHashMap<String, Cake>();
    static {//模拟数据库中的记录
        cake.put("1001", new Cake("1001", "A类:巧克力蛋糕"));
        cake.put("1002", new Cake("1002", "B类:水果沙拉蛋糕"));
        cake.put("1003", new Cake("1003", "C类:慕斯蛋糕"));
        cake.put("1004", new Cake("1004", "D类:奶油蛋糕"));
        cake.put("1005", new Cake("1005", "E类:干果蛋糕"));
    }
    // 获得所有的蛋糕
    public static Collection<Cake> getAll() {
        return cake.values();
    }
    // 根据指定的id获蛋糕
    public static Cake getCake(String id) {
        return cake.get(id);
    }
}

3.ListCakeServlet:

package servlet;

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;

import entity.Cake;
import entity.CakeDB;

@WebServlet("/ListCakeServlet")
public class ListCakeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public ListCakeServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse resp) 
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        Collection<Cake> cakes = CakeDB.getAll();
        out.write("本站提供的蛋糕有:<br>");
        for (Cake cake : cakes) {
            String url = "PurchaseServlet?id=" + cake.getId();
            out.write(cake.getName() + "<a href='" + url
                    + "'>点击购买</a><br>");
        }
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

4.PurchaseServlet:

package servlet;

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;

import entity.Cake;
import entity.CakeDB;

@WebServlet("/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public PurchaseServlet() {
        super();
    }

	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		// 获得用户购买的商品
        String id = req.getParameter("id");
        if (id == null) {
            // 如果id为null,重定向到ListBookServlet页面
            String url = "ListBookServlet";
            resp.sendRedirect(url);
            return;
        }
        Cake book = CakeDB.getCake(id);
        // 创建或者获得用户的Session对象
        HttpSession session = req.getSession();
        // 从Session对象中获得用户的购物车
        List<Cake> cart = (List) session.getAttribute("cart");
        if (cart == null) {
            // 首次购买,为用户创建一个购物车(List集合模拟购物车)
            cart = new ArrayList<Cake>();
            // 将购物城存入Session对象
            session.setAttribute("cart", cart);
        }
        // 将商品放入购物车
        cart.add(book);
        // 创建Cookie存放Session的标识号
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        cookie.setMaxAge(60 * 30);
        cookie.setPath("/Servlet");
        resp.addCookie(cookie);
        // 重定向到购物车页面
        String url = "CartServlet";
        resp.sendRedirect(url);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doGet(request, response);
	}

}

5.CartServlet:

package servlet;


import entity.Cake;

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;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet("/CartServlet")

public class CartServlet extends HttpServlet {



    protected void  doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        List<Cake> cart = null;
        boolean purFlag = true;
        HttpSession session = req.getSession(false);
        if (session == null)
        {
            purFlag =false;
        }
        else {
            cart = (List) session.getAttribute("cart");

            if (cart == null){
                purFlag=false;
            }
        }

        if(!purFlag){
            out.write("抱歉,您还没有购买任何商品!<br>");
        }
        else {
            out.write("您购买的蛋糕有:<br>");
            double price = 0;
            for (Cake cake:cart){
                out.write(cake.getName() +"<br>");
            }
        }

    }


}

三、运行

1.在ListCakeServlet文件下运行,点击鼠标右键,选择run as,具体如图:
使用Session和cookie会话对象实现简单购物车功能(超详细)
2.运行结果如图:
使用Session和cookie会话对象实现简单购物车功能(超详细)
点击购买之后跳转CartServlet页面,比如我点了巧克力蛋糕后:

使用Session和cookie会话对象实现简单购物车功能(超详细)
以上就是使用Session和cookie会话对象实现简单购物车功能。希望对你有帮助哦~文章来源地址https://www.toymoban.com/news/detail-416590.html

到了这里,关于使用Session和cookie会话对象实现简单购物车功能(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web会话跟踪:Cookie与Session

    在Web应用中,同一个浏览器与Web服务器的一次一系列的各种交互活动称为 会话 。而Web应用往往需要对用户进行会话跟踪,记录用户的状态。下面简单介绍一下会话跟踪技术Cookie与Session。 Cookie ,有时也用其复数形式 Cookies,是一个保存在用户客户端计算机中的简单的小型文本

    2024年02月19日
    浏览(37)
  • web学习--Cookie与Session会话技术

    1.概念:客户端会话技术,将数据保存在客户端 使用步骤: 1,创建Cookie对象,绑定数据 2.发送Cookie对象 3.获取Cookie,拿到数据 WebServlet(\\\"/Demo1\\\") public class CookidDemo1 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException

    2024年02月13日
    浏览(33)
  • gin会话控制篇 - Cookie和Session

    HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出 Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思 Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求

    2024年01月21日
    浏览(29)
  • 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

    1.1 Cookie 1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享 2. 过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送

    2024年02月10日
    浏览(35)
  • Servlet【 ServletAPI中的会话管理Cookie与Session】

    HTTP 协议自身是属于 “无状态” 协议. “无状态” 的含义指的是: 默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系.但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的. 例如登陆网站成功后, 第二次访问的时候服务器就能知

    2024年02月09日
    浏览(43)
  • 如何让你的会话更安全,浅析Session与Cookie

            在我们面试的时候,面试官问及 XSS 漏洞的时候,我们常常会说比如劫持 Cookie,问及防御方法的时候,又常常会说设置 httponly ,本篇文章将从代码层面简单的普及 Session 和 Cookie 的生成过程,及防御的方法,希望看到这篇文章后,下一次遇到面试官的时候,你能够

    2024年02月22日
    浏览(42)
  • 从Cookie到Session: Servlet API中的会话管理详解

    首先, 在学习过 HTTP 协议的基础上, 我们需要知道 Cookie 是 HTTP 请求报头中的一个段, 本质上是浏览器在本地存储数据的一种机制, 要清楚 Cookie 是从哪里来, 要到哪里去. Cookie 是来自于服务器的, 通过响应报文中的 Set-Cookie 字段将数据返回保存在浏览器本地的; 后续当浏览

    2024年02月08日
    浏览(31)
  • Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    web 服务器 :可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache 公司的产品 WebLogic:Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 J2EE 规范。WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用

    2024年02月02日
    浏览(67)
  • 【Python】Web学习笔记_flask(6)——会话&session对象

    处理利用cookie来判断用户登录外,也可以使用session来判断用户是否登录 html代码和cookie对象的设置相同    

    2024年02月12日
    浏览(33)
  • Java Web——Session实现购物车

    Session实现购物车 (1)掌握什么是Cookie对象,掌握Cookie对象的使用 (2)掌握什么是Session对象,掌握Session对象的使用 (3)掌握使用Session对象实现购物车功能 使用Session对象实现购物车功能 购物车的实现流程如下: 要求在Java web项目里,创建 Book.java 类封装图书信息; 模拟数

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包