用Java实现网上商场购物车功能

如图所示,使用session技术实现网上商场购物车功能和使用cookie保存最近浏览过点商品

img

希望这个实例【使用Session和cookie会话对象实现简单购物车功能(超详细)】,对你编写程序有所帮助:https://blog.csdn.net/neverowned/article/details/127776969

Java-实现购物车功能小系统
如有帮助,望采纳

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
class Goods{
    private Integer id;
    private String name;
    private double price;
    private Integer numbers;
    Goods(){}
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double jia) {
        this.price = jia;
    }
    public Integer getNumbers() {
        return numbers;
    }
    public void setNumbers(Integer numbers) {
        this.numbers = numbers;
    }
    public Goods(Integer id, String name, Integer price, Integer numbers) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
        this.numbers = numbers;
    }
    
}
//添加购物车
public class GouWu {
    Map<Integer,Goods> al=new HashMap<Integer,Goods>();
    public   void cun() {
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入商品的编号");
    Integer id = sc.nextInt();
    Goods m=new Goods();
    if(al.containsKey(id)) {
        al.get(id).setNumbers((al.get(id).getNumbers()+1));
    }else {
    m.setId(id);
    System.out.println("请输入添加的商品");
    String name = sc.next();
    m.setName(name);
    System.out.println("请输入"+name+"的单价");
    double  jia = sc.nextDouble();
    System.out.println("请输入购买"+name+"的数量");
    int amount =sc.nextInt();
    System.out.println();
    System.out.println();
    m.setPrice(jia);
    m.setNumbers(amount);
    al.put(id, m);
    }
    }
    //查看一件
    public void cha() {
        System.out.println("请输入要查看商品的编号");
        Scanner sc=new Scanner(System.in);
        Integer id = sc.nextInt();
        if(al.containsKey(id)) {
        System.out.println("编号\t名字\t价格\t数量");
        System.out.println(al.get(id).getId()+"\t"+al.get(id).getName()+"\t"+al.get(id).getPrice()+"\t"+al.get(id).getNumbers());
        }else {
            System.out.println("该商品编号不存在,请重新输入");
            this.cha();
        }
        System.out.println();
        System.out.println();
    }
    //删除商品
    public void deleate(){
        System.out.println("请输入要删除的商品的编号");
        Scanner sc=new Scanner(System.in);
        Integer id = sc.nextInt();
        if(al.containsKey(id)) {
        al.remove(id);
        }else {
            System.out.println("该商品编号不存在,请重新输入");
            this.deleate();
        }
        System.out.println();
        System.out.println();
    }
    
    //打印小票
    public void print() {
        double sum=0;
        System.out.println("------欢迎光临XXXXXX超市-------");
        System.out.println("-----------购物清单-----------");
        for(Goods g:al.values()) {
            System.out.println("编号\t名字\t价格\t数量");
            System.out.println(g.getId()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getNumbers());
            sum += g.getPrice()*g.getNumbers();
        }
        System.out.println("----------------------------");
        System.out.println("     你一共需要支付:"+sum+"元");
    }
    //查看购物车
    public void View() {
        System.out.println("-----------购物清单-----------");
        for(Goods g:al.values()) {
            System.out.println("编号\t名字\t价格\t数量");
            System.out.println(g.getId()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getNumbers());
        }System.out.println();System.out.println();
        }
    public static void main(String[] args) {
        GouWu myg=new GouWu();
        Scanner sc =new Scanner(System.in);
        do {
            System.out.println("----功能列表----");
            System.out.println("(1)添加商品到购物车");
            System.out.println("(2)查看商品属性");
            System.out.println("(3)删除购物车商品");
            System.out.println("(4)查看购物车所有商品");
            System.out.println("(5)结账(打印小票)");
            System.out.println();
            System.out.println();
            Integer it = sc.nextInt();
            switch(it) {
            case 1: myg.cun();
                    break;
            case 2:myg.cha();
                    break;
            case 3:myg.deleate();
                    break;
            case 4:myg.View();
                    break;
            case 5:
                sc.close();
                myg.print();
                System.exit(0);
            default:System.out.println("输入有误,请重新输入");
            break;
            }
            
        }while(true);
        
    }
}

望采纳

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;
import javax.servlet.http.HttpSession;

public class ShoppingServlet extends HttpServlet {

  // 处理客户端发送的POST请求
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    // 获取客户端发送的商品名称
    String productName = request.getParameter("productName");

    // 获取当前会话并设置超时时间为10分钟
    HttpSession session = request.getSession();
    session.setMaxInactiveInterval(10 * 60);

    // 将商品加入购物车
    addProductToCart(productName, session);

    // 设置Cookie,保存最近浏览的商品
    Cookie cookie = new Cookie("lastViewedProduct", productName);
    cookie.setMaxAge(12 * 60 * 60);  // 设置Cookie的有效期为12小时
    response.addCookie(cookie);
  }

  // 将商品加入购物车
  private void addProductToCart(String productName, HttpSession session) {
    // 在这里实现将商品加入购物车的逻辑
  }
}

上面的代码示例演示了如何使用Java Servlet技术实现网上商城购物车功能。

  • 首先,在处理客户端发送的POST请求时,通过调用HttpServletRequest.getParameter()方法获取客户端发送的商品名称。

  • 接着,调用HttpServletRequest.getSession()方法获取当前会话,并调用HttpSession.setMaxInactiveInterval()方法设置会话的超时时间为10分钟。

  • 接下来,调用上面定义的addProductToCart()方法将商品加入购物车。

  • 最后,调用Cookie类的构造函数创建一个Cookie对象,并调用Cookie.setMaxAge()方法设置Cookie的有效期为12小时。然后调用HttpServletResponse.addCookie()方法将Cookie添加到响应头中,以便客户端浏览器能够保存它。