使用session做的购物车

温故而知新。工程结构:

使用session做的购物车_第1张图片

public class Product {

    private int id;
    private String name;
    private double price;

    public Product(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
import com.yz.bean.Product;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.*;

/**
 * @description:
 * @author: yz
 * @create: 2018/11/7 11:06
 */
@Controller
public class ProductController {

    private static List list = new ArrayList();

    // 只会执行一次,当类的字节码被加载到jvm的时候,只会执行一次
    static {
        list.add(new Product(1,"小米5",1999));   //1
        list.add(new Product(2,"海尔冰箱",2999)); //2
        list.add(new Product(3,"vivo8",3999)); //3
        list.add(new Product(4,"iphon9",6999));
        list.add(new Product(5,"联想鼠标垫",50));
    }

    // 显示商品列表
    @RequestMapping("listProduct")
    public String listProduct(Model model){
        // 准备商品
        // 存商品
        model.addAttribute("list",list);
        return "list";
    }
    // 添加商品到购物车中,需要商品的编号
    @RequestMapping("addToCart")
    public String addToCart(HttpServletRequest request , HttpServletResponse response, int id){

        System.out.println("id:"+id);
        // 获取sessoin
        HttpSession session = request.getSession();
        // 获取商品对象
        Product product = list.get(id - 1);
        // 存储到购物车
        Map cartMap = (Map) session.getAttribute("cartMap");
        if(cartMap == null){
            cartMap = new HashMap();
        }

        if(cartMap.containsKey(product)){
            // 有这件商品,原来的数量+1
            cartMap.put(product, cartMap.get(product)+1);
        }else {
            cartMap.put(product,1);
        }

        // 把购物车存到session中去
        session.setAttribute("cartMap",cartMap);
        System.out.println("添加购物车完毕,要跳转到中转页面了~");
        // 为了让购物车存的时间更长久一点,现在需要手动设置cookie
        Cookie cookie = new Cookie("JSESSIONID" , session.getId());
        cookie.setMaxAge(60*60*24*7);
        response.addCookie(cookie);

        //4. 跳转页面  当前的请求是从模板页面发送出来的,所以这里也认为是跑到模板页面去了。
        return "redirect:transfer.html";
    }

    //跳转到购物车的页面
    @RequestMapping("toCart")
    public String toCart(){

        return "cart";
    }
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @description:
 * @author: yz
 * @create: 2018/11/7 11:03
 */
@SpringBootApplication
public class CartApp {
    public static void main(String [] args){
        SpringApplication.run(CartApp.class,args);
    }
}

index.html 




    
    Title



    

开始购物

transfer.html




    
    Title



    
    

继续购物



去购物车结算



cart.html




    
    购物车



    
编号 名称 价格 数量 小计
1 2 3 3 4

list.html




    
    Title



    

商品列表

编号 名称 价格 操作
1 小米99 1999 加入购物车

build.gradle

plugins {
    id 'java'
}

group 'com.yz'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile("org.springframework.boot:spring-boot-starter-web:1.5.10.RELEASE")
    compile("org.thymeleaf:thymeleaf-spring4:2.1.4.RELEASE")
}

效果:

使用session做的购物车_第2张图片

你可能感兴趣的:(使用session做的购物车)