小弟刚学Servlet,想单独用Servlet做一个网上书店。
但当处理购物车时,遇到了一些问题,希望大侠能给予帮助!
购物车的具体操作包括向购物车里添加书籍,从购物车里删除书籍并购买购物车里选种的书。并且当新添加的书已有的情况下能够数量累计。
我想把购物车写成ArrayList,并把这个购物车放在Session中,所有书籍的详细信息都包装成bean。当数量累计的时候缺不知道该怎么去做。如果将购物车换成HashMap当添加同样的书以达到数量累计的时候又不知道key值该怎么写。。
希望有人能为我指点迷津,在此非常感谢!
用vector也能实现。
这里有一些例子,你可以看看。
Cart.jsp
〈%@ page session="true" import="java.util.*, shopping.CD" %>
〈%
Vector buylist = (Vector) session.getValue("shopping.shoppingcart");
if (buylist != null && (buylist.size() > 0)) {
%>
〈center>
〈table border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
〈tr>
〈td>〈b>ALBUM〈/b>〈/td>
〈td>〈b>ARTIST〈/b>〈/td>
〈td>〈b>COUNTRY〈/b>〈/td>
〈td>〈b>PRICE〈/b>〈/td>
〈td>〈b>QUANTITY〈/b>〈/td>
〈td>〈/td>
〈/tr>
〈%
for (int index=0; index 〈 buylist.size();index++) {
CD anOrder = (CD) buylist.elementAt(index);
%>
〈tr>
〈td>〈b>〈%= anOrder.getAlbum() %>〈/b>〈/td>
〈td>〈b>〈%= anOrder.getArtist() %>〈/b>〈/td>
〈td>〈b>〈%= anOrder.getCountry() %>〈/b>〈/td>
〈td>〈b>〈%= anOrder.getPrice() %>〈/b>〈/td>
〈td>〈b>〈%= anOrder.getQuantity() %>〈/b>〈/td>
〈td>
〈form name="deleteForm"
action="/examples/servlet/ShoppingServlet"
method="POST">
〈input type="submit" value="Delete">
〈input type="hidden" name= "delindex" value=´〈%= index %>´>
〈input type="hidden" name="action" value="DELETE">
〈/form>
〈/td>
〈/tr>
〈% } %>
〈/table>
〈p>
〈form name="checkoutForm"
action="/examples/servlet/ShoppingServlet"
method="POST">
〈input type="hidden" name="action" value="CHECKOUT">
〈input type="submit" name="Checkout" value="Checkout">
〈/form>
〈/center>
〈% } %>
这里,Cart.jsp按照MVC的模式1处理基于SESSION的购物车的表现。请看Cart.jsp开始处的代码:
〈%
Vector buylist = (Vector) session.getValue("shopping.shoppingcart");
if (buylist != null && (buylist.size() > 0)) {
%>
本质上,这段代码从SESSION中取出“购物车”。如果“购物车”为空或者没有被创建,它就什么也不显示。
如果“购物车”不为空,用户选择的商品从车中取出,依次显示在页面上:
〈%
for (int index=0; index 〈 buylist.size(); index++) {
CD anOrder = (CD) buylist.elementAt(index);
%>
一旦生成一个物品的说明,就使用JSP按照事先设定的模板将其插入静态HTML页面。下图显示了用户选购一些物品后的界面: