Simulate cake shopping cart through session

1. Create a class that encapsulates cake information, the cake class

public class Cake {
    
    
    private String id;
    private String name;

    public Cake(String id, String name) {
    
    
        this.id = id;
        this.name = name;
    }

    public String getId() {
    
    
        return id;
    }

    public void setId(String id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }
}

2. Create a database simulation class cakedb class

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("1   ",new Cake("1","A类蛋糕"));
        cake.put("2",new Cake("2","B类蛋糕"));
        cake.put("3",new Cake("3","C类蛋糕"));
        cake.put("4",new Cake("4","D类蛋糕"));
        cake.put("5",new Cake("5","E类蛋糕"));
    }
    public static Collection<Cake>getAll(){
    
    
        return cake.values();
    }
    public static Cake getCake(String id){
    
    
        return cake.get(id);
    }
}

3. Create a class named ListCakeServlet. This servlet is used to display a list of all cakes that can be purchased. By clicking the purchase hyperlink, the cake can be added to the shopping cart.

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

@WebServlet(name = "ListCakeServlet",urlPatterns = "/ListCakeServlet")
public class ListCakeServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.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 doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request,response);
    }
}

4. Create a class named PurchaseServlet

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "PurchaseServlet",urlPatterns = "/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        String id=request.getParameter("id");
        if (id==null){
    
    
            String url="ListCakeServlet";
            response.sendRedirect(url);
            return;
        }
        Cake cake=CakeDB.getCake(id);
        HttpSession session=request.getSession();
        List<Cake> cart=(List)session.getAttribute("cart");
        if (cart==null){
    
    
            cart=new ArrayList<Cake>();
            session.setAttribute("cart",cart);
        }
        cart.add(cake);
        Cookie cookie=new Cookie("JSESSIONID",session.getId());
        cookie.setMaxAge(60*30);
        cookie.setPath("/Servlet");
        response.addCookie(cookie);
        String url="CartServlet";
        response.sendRedirect(url);
    }

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

5. Create a servlet class of CartServlet, which is mainly used to display the list of cakes that users have purchased

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(name = "CartServlet",urlPatterns = "/CartServlet")
public class CartServlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();
        List<Cake> cart=null;
        boolean pruFlag=true;
        HttpSession session=request.getSession(false);
        if (session==null){
    
    
            pruFlag=false;
        }else {
    
    
            cart =(List)session.getAttribute("cart");
            if (cart==null){
    
    
                pruFlag=false;
            }
        }
        if (!pruFlag){
    
    
            out.write("对不起!您还没有购买任何产品");
        }
        else {
    
    
            out.write("您购买的蛋糕有:<br>");
            double price=0;
            for (Cake cake:cart){
    
    
                out.write(cake.getName()+"<br>");
            }
        }
    }

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

Guess you like

Origin blog.csdn.net/gxs508843279/article/details/127552007