1.zhangsan登录,选购自己的商品,添加到购物车
2.zhangsan退出登录,lisi登录选购自己的商品,添加到购物车
3.两个用户不断退出重登时,对应的购物车仍然存在
项目结构:简单web项目
Title
注:本项目名为/exercise2
web.xml
index.html List com.exercise.servlet.ListServlet List /ListBookServlet Purchase com.exercise.servlet.PurchaseServlet Purchase /Purchase Cart com.exercise.servlet.CartServlet Cart /CartServlet
实体类
package com.exercise.pojo;
import java.io.Serializable;
public class Book implements Serializable {
private static final long serial=1L;
private String id;
private String name;
public Book() {
}
public Book(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;
}
}
模拟数据库
package com.exercise.pojo;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class BookDB {
private static Mapbooks=new HashMap<>();
static{
books.put("1",new Book("1","javaweb开发"));
books.put("2",new Book("2","jdbc开发"));
books.put("3",new Book("3","java开发"));
books.put("4",new Book("4","struts开发"));
books.put("5",new Book("5","spring开发"));
}
public static CollectiongetAll(){
return books.values();
}
public static Book getBook(String id){
return books.get(id);
}
}
展示商品购买链接
package com.exercise.servlet; import com.exercise.pojo.Book; import com.exercise.pojo.BookDB; import javax.servlet.ServletException; 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; public class ListServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置字符编码方式 response.setContentType("text/html;charset=utf-8"); String name=request.getParameter("name"); PrintWriter out=response.getWriter(); Collectionbooks= BookDB.getAll(); out.write("本站提供的图书有:
"); for(Book book:books){ String url="/exercise2/Purchase?name="+name+"&id="+book.getId(); out.write(book.getName()+"点击链接即可购买
"); } } }
进行购买处理
package com.exercise.servlet; import com.exercise.pojo.Book; import com.exercise.pojo.BookDB; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class PurchaseServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置字符编码方式 response.setContentType("text/html;charset=utf-8"); String name=request.getParameter("name"); String id=request.getParameter("id"); if(id==null){ String url="/exercise2/ListBookServlet"; response.sendRedirect(url); return; } Book book_Purchase=BookDB.getBook(id); HttpSession session=request.getSession(); // 创建cart集合 Listcart=(List)session.getAttribute("cart_"+name); if(cart==null) { cart = new ArrayList (); if (name.equals("zhangsan")) { session.setAttribute("cart_zhangsan", cart); }else if(name.equals("lisi")){ session.setAttribute("cart_lisi", cart); } } cart.add(book_Purchase); cookie cookie=new cookie("JSESSIONID",session.getId()); // 当前的cookie的name: JSESSIonID // 当前的cookie的value:E59279BD40565B94731D7E1EFF449092(session的id) // 设置过期时间为3分钟,时间超过3分钟,cookie过期,对应的session也会变化 cookie.setMaxAge(3*60); cookie.setPath("/exercise2"); response.addcookie(cookie); String url="/exercise2/CartServlet?name="+name+""; response.sendRedirect(url); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
显示购买结果,并给出链接,供用户进行下一步操作
package com.exercise.servlet; import com.exercise.pojo.Book; import javax.servlet.ServletException; 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; public class CartServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); String name=req.getParameter("name"); PrintWriter out= resp.getWriter(); Listcart=null; Boolean flag=true; HttpSession session=req.getSession(false); if(session==null){ flag=false; }else { cart=(List)session.getAttribute("cart_"+name); if(cart==null){ flag=false; } } if(!flag){ out.write("对不起!你还没有购买任何商品!
"); }else { // 购物车里面有商品 out.write("您购买的图书有:
"); for(Book book:cart){ out.write(book.getName()+"
"); } String url1="/exercise2/ListBookServlet?name="+name+""; out.write("继续购买其它商品
"); String url2="/exercise2/index.html"; out.write("退出登录,更换用户
"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } }



