1,创建封装蛋糕信息的类,cake类
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,创建数据库模拟类cakedb类
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,创建一个名为ListCakeServlet的类,该servlet用于显示所有可购买蛋糕的列表,通过点击购买的超链接,便可将蛋糕添加到购物车中。
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,创建名为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,创建一个CartServlet的servlet类,该类主要用于展示用户已经购买的蛋糕列表
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);
}
}