请按照以下要求设计一个购物车的类PurchaseServlet。 书籍数据如下: public class BookDB { private static Map<String, Book> books = new LinkedHashMap<String, Book>(); 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 Collection<Book> getAll() { return books.values(); } // 根据指定的id获得图书 public static Book getBook(String id) { return books.get(id); } 要求如下: 1) 创建一个PurchaseServlet类,使其继承HttpServlet类并重写该类的doGet()方法; 2) 在doGet()方法中,使用request.getSession()实现购物车; 3) 将session的id保存到cookie中; 4) 重定向到/chapter05/CartServlet。
时间: 2023-07-19 10:42:43 浏览: 546
下面是PurchaseServlet类的代码实现:
```java
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;
@WebServlet("/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取session对象
HttpSession session = request.getSession();
// 获取购物车对象
Map<String, Integer> cart = (Map<String, Integer>) session.getAttribute("cart");
if (cart == null) {
// 如果购物车对象不存在,则创建一个新的购物车
cart = new HashMap<String, Integer>();
session.setAttribute("cart", cart);
}
// 获取请求参数,即要购买的书的id
String bookId = request.getParameter("bookId");
if (bookId != null) {
// 将要购买的书的数量加入购物车中
Integer count = cart.get(bookId);
if (count == null) {
cart.put(bookId, 1);
} else {
cart.put(bookId, count + 1);
}
}
// 保存session的id到cookie中
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(30 * 60); // 设置cookie的有效期为30分钟
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
// 重定向到CartServlet
response.sendRedirect(request.getContextPath() + "/chapter05/CartServlet");
}
}
```
该类实现了一个购物车的功能,通过session来实现购物车的存储,将session的id保存到cookie中,然后重定向到CartServlet进行购物车的显示和结算。
阅读全文