购物车的简单业务逻辑
思路:
当用户点击购买商品时,我们就把该商品保存到session中。该session的结构是
Name value
Books HashMap
而HashMap 的结构是
Key value
BookID Book对象
Book.java
Public Class Booke implements java.io.Serializable{
private String id;
private String name;
private int num;
private double price;
}
用到下面知识:
1. Java基础集合 ArrayList HashMap LinkedHashMap(有序)
2. Session技术
3. Servlet
4. 单态
5. 选择不同的集合 list集合是有序的 map集合默认是无序的。 list和map集合都可以放入空值,list可以放入相同的对象,map可以放入相同的对象但是key不能重复。
实现的主要代码
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String bookName = request.getParameter("name");
String bookId = request.getParameter("id");
HttpSession session = request.getSession();
HashMap<String, Book> bookMap = (HashMap<String, Book>) session
.getAttribute("mybooks");
if (bookMap == null) {
bookMap = new HashMap<String, Book>();
Book book = new Book();
book.setId(bookId);
book.setName(bookName);
book.setNum(1);
bookMap.put(bookId, book);
} else {
if (bookMap.containsKey(bookId)) {
Book book = bookMap.get(bookId);
int bookNum = book.getNum();
book.setNum(bookNum + 1);
} else {
Book book = new Book();
book.setId(bookId);
System.out.println(bookName);
book.setName(bookName);
book.setNum(1);
bookMap.put(bookId, book);
}
}
session.setAttribute("mybooks", bookMap);
request.getRequestDispatcher("/ShowMyCart").forward(request, response);
即session在任何时候都能从服务器中取得,如果服务器中取得的bookMap为空,就代表是第一次购买,需要创建相应的对象,如果不为空,则代表bookMap以创建不能再重复创建了,否则会覆盖掉原来的session的内容,接着在计算买书的数量。