现在的问题是,当我点击查看购物车的时候页面不跳转,或者有时候干脆跳出空指针,具体问题出现在以下文件
menageshopcart.jsp
ViewShoppingCartServlet.Java代码见附件,希望大家能帮忙~
包含2个javaBeans文件 和 5个用于增加,删除,清空,查看等控制作用的servlet文件,还有2个是视图层的jsp文件上传不了附件,能帮忙的人留下邮箱吧,我把源代码发给你们,谢谢了~~通宵等待结果~~~

解决方案 »

  1.   


    package com.Lirael.Rough.Carts;import java.math.BigDecimal;public class CartItem implements java.io.Serializable
    {

    private static final long serialVersionUID = -448498300222405965L;

    private String goodsId;
    private String goodsName;
    private double goodsPrice;
    private int goodsAmount;
    private double totalPrice;

    public CartItem( String goodsId, String goodsName, double goodsPrice, int goodsAmount )
    {
    this.goodsId = goodsId;
    this.goodsName = goodsName;
    this.goodsPrice = goodsPrice;
    this.goodsAmount = goodsAmount;
    } public int getGoodsAmount() 
    {
    return goodsAmount;
    } public void setGoodsAmount(int goodsAmount) 
    {
    this.goodsAmount = goodsAmount;
    } public String getGoodsId() 
    {
    return goodsId;
    } public void setGoodsId(String goodsId) 
    {
    this.goodsId = goodsId;
    } public String getGoodsName() 
    {
    return goodsName;
    } public void setGoodsName(String goodsName) 
    {
    this.goodsName = goodsName;
    } public double getGoodsPrice() 
    {
    return goodsPrice;
    } public void setGoodsPrice(double goodsPrice) 
    {
    this.goodsPrice = goodsPrice;
    } public double getTotalPrice()
    {
    this.totalPrice=this.goodsPrice*(double)this.goodsAmount;
    BigDecimal total=new BigDecimal(this.totalPrice);
    total=total.setScale(2,5);
    this.totalPrice=total.doubleValue();
    return this.totalPrice;
    }
    }
      

  2.   


    package com.Lirael.Rough.Carts;import java.math.BigDecimal;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;public class ShoppingCart 
    {
    private Map shopCart = new HashMap();
    private double allGoodsPrice = 0;

    @SuppressWarnings("unchecked")
    public void addGoods( String goodsId, String goodsName, int goodsAmount, double goodsPrice )
    {
    CartItem cartItem = (CartItem)shopCart.get(goodsId);

    if( cartItem != null )
    {
    int amount = cartItem.getGoodsAmount();
    amount = amount + cartItem.getGoodsAmount();
    cartItem.setGoodsAmount(amount);
    }
    else
    {
    cartItem = new CartItem(goodsId, goodsName, goodsPrice, goodsAmount);
    shopCart.put(goodsId, cartItem);
    }
    }

    public void deleteGoods( String goodsId )
    {
    CartItem cartItem = (CartItem)shopCart.get(goodsId);

    if( cartItem != null )
    {
    shopCart.remove(goodsId);
    }
    }

    public void changeAmount( String goodsId, int goodsAmount )
    {
    CartItem cartItem = (CartItem)shopCart.get(goodsId);

    if( cartItem != null )
    {
    cartItem.setGoodsAmount(goodsAmount);
    }
    }

    public Map getShopCart()
    {
    return this.shopCart;
    }

    public double getAllGoodsPrice()
    {
    this.allGoodsPrice = 0;
    Iterator it = shopCart.keySet().iterator();

    while( it.hasNext() )
    {
    String goodsId = (String)it.next();
    CartItem cartItem = (CartItem)shopCart.get(goodsId);

    if( cartItem != null )
    {
    this.allGoodsPrice = this.allGoodsPrice + cartItem.getTotalPrice();
    }
    } BigDecimal allGoods=new BigDecimal(this.allGoodsPrice);
    allGoods = allGoods.setScale(2,5);
    this.allGoodsPrice = allGoods.doubleValue();
    return this.allGoodsPrice;  
    }

    public void clearAllGoodsPrice()
    {
    this.allGoodsPrice = 0;
    }

    public void clearShoppingCart()
    {
    this.shopCart = new HashMap<String, CartItem>();
    }
    }
      

  3.   


    package com.Lirael.Rough.Servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;
    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 com.Lirael.Rough.Carts.ShoppingCart;public class AddGoodsServlet extends HttpServlet 
    { private static final long serialVersionUID = -4264156787271103152L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    String goodsId = request.getParameter("goodsId");
    String goodsName = request.getParameter("goodsName");

    String goodsPriceStr = request.getParameter("goodsPrice");
    double goodsPrice = Double.parseDouble(goodsPriceStr);
    String goodsAmountStr = request.getParameter("goodsAmount");
         int goodsAmount = Integer.parseInt(goodsAmountStr);
        
         HttpSession session = request.getSession();
         ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");
        
         if( shoppingCart == null )
         {
         shoppingCart = new ShoppingCart();
         session.setAttribute("shoppingCart", shoppingCart);
         }
        
         shoppingCart.addGoods(goodsId, goodsName, goodsAmount, goodsPrice);
         RequestDispatcher requestDispatcher = request.getRequestDispatcher("/goodslist.jsp");
    requestDispatcher.forward(request,response);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    doGet( request, response );
    }}
      

  4.   


    package com.Lirael.Rough.Servlet;import java.io.IOException;
    import java.util.Map;import javax.servlet.RequestDispatcher;
    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 com.Lirael.Rough.Carts.CartItem;
    import com.Lirael.Rough.Carts.ShoppingCart;public class ChangeAmountServlet extends HttpServlet
    { private static final long serialVersionUID = 3734043546575976095L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    String goodsId = request.getParameter("goodsId");
    String goodsAmountStr = request.getParameter("goodsAmount");
    int goodsAmount = 0;

    HttpSession session = request.getSession();
    ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");

    if( shoppingCart != null )
    {
    goodsAmount = Integer.parseInt(goodsAmountStr);
    try
    {
    goodsAmount = Integer.parseInt(goodsAmountStr);
    }
    catch( NumberFormatException e )
    {
    Map shopCartMap = shoppingCart.getShopCart();
    CartItem cartItem = (CartItem)shopCartMap.get(goodsId);

    if( cartItem != null )
    {
    goodsAmount = cartItem.getGoodsAmount();
    }
    }

    if(goodsAmount > 0)
            {
    shoppingCart.changeAmount(goodsId, goodsAmount);
                RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servler/viewShoppingCart");
        requestDispatcher.forward(request,response);
            } 
            else
            {
             if(goodsAmount == 0)
                {
             RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servler/deleteGoods?goodsId=" + goodsId);
            requestDispatcher.forward(request,response);
        }
        else
        { 
         RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servler/viewShoppingCart");
            requestDispatcher.forward(request,response);
        }
            }
    }

    } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    doGet( request, response );
    }}package com.Lirael.Rough.Servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;
    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 com.Lirael.Rough.Carts.ShoppingCart;public class ClearShoppingCartServlet extends HttpServlet 
    { private static final long serialVersionUID = -1302200461798115134L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
     HttpSession session = request.getSession();
     ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");
     
         if(shoppingCart != null)
         {
          shoppingCart.clearShoppingCart();
             RequestDispatcher requestDispatcher = request.getRequestDispatcher("/goodslist.jsp");
     requestDispatcher.forward(request,response);
         }
         else
         {
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("/goodslist.jsp");
    requestDispatcher.forward(request,response);
         }
    } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    doGet( request, response );
    }}
    package com.Lirael.Rough.Servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;
    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 com.Lirael.Rough.Carts.ShoppingCart;public class DeleteGoodsServlet extends HttpServlet 
    { private static final long serialVersionUID = 4101332995078844540L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    String goodsId = request.getParameter("goodsId");
            HttpSession session = request.getSession();
            ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");
            
            if(shoppingCart != null)
            {
                shoppingCart.deleteGoods(goodsId);
            }
            
    RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servlet/viewShoppingCart");
    requestDispatcher.forward(request,response);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    doGet( request, response );
    }}
    [code=Java]
    package com.Lirael.Rough.Servlet;import java.io.IOException;
    import java.util.Map;import javax.servlet.RequestDispatcher;
    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 com.Lirael.Rough.Carts.ShoppingCart;public class ViewShoppingCartServlet extends HttpServlet 
    { private static final long serialVersionUID = -3178057938744515443L; public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
    HttpSession session = request.getSession();
    ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");

    if( shoppingCart != null )
    {
    Map shopMapCart = shoppingCart.getShopCart();
    request.setAttribute("shopMapCart", shopMapCart);
    System.out.println(request.getAttribute("shopMapCart"));

    RequestDispatcher requestDispatcher = request.getRequestDispatcher("/menageshopcart.jsp");
        requestDispatcher.forward(request,response);
      
        
    }
    else
    {
    RequestDispatcher requestDispatcher = request.getRequestDispatcher("/goodslist.jsp");
        requestDispatcher.forward(request,response);
    }
    } public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    { doGet( request, response );
    }}
      

  5.   


    <%@ page import="java.sql.*,com.Lirael.Rough.Servlet.*,com.Lirael.Rough.Carts.*,java.util.*,java.sql.*"  pageEncoding="UTF-8"%>
    <%
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);
    %>
    <HTML>
    <HEAD>
    <TITLE> show the goods in the table </TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">
    <!--
    a {
    font-size: 12px;
    color: #CCFF33;
    }
    a:link {
    text-decoration: none;
    color: #669900;
    }
    a:visited {
    text-decoration: none;
    color: #669900;
    }
    a:hover {
    text-decoration: underline;
    color: #333333;
    }
    a:active {
    text-decoration: none;
    color: #333333;
    }
    body,td,th {
    font-size: 12px;
    color: #333333;
    }
    -->
    </style></HEAD>
    <BODY>
    <p align="center"><strong> 商品列表</strong></p>
    <table width="600" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCFF99">
      <tr bgcolor="#CCFF99">
        <td width="149"><div align="center"><strong>goodsId</strong></div></td>
        <td width="181"><div align="center"><strong>goodsName</strong></div></td>
        <td width="120"><div align="center"><strong>goodsPrice</strong></div></td>
        <td width="122"><div align="center">----</div></td>
      </tr>
      <tr>
        <td><div align="center">1000</div></td>
        <td><div align="center">ball</div></td>
        <td><div align="center">30.5</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1000&goodsName=ball&goodsPrice=30.5&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td><div align="center">1001</div></td>
        <td><div align="center">笔</div></td>
        <td><div align="center">88.8</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1001&goodsName=pen&goodsPrice=88.8&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1002</div></td>
        <td><div align="center">书</div></td>
        <td><div align="center">10.2</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1002&goodsName=Êé&goodsPrice=10.2&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1003</div></td>
        <td><div align="center">衣服</div></td>
        <td><div align="center">55.3</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1003&goodsName=cloth&goodsPrice=55.3&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1004</div></td>
        <td><div align="center">手表</div></td>
        <td><div align="center">69.2</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1004&goodsName=watch&goodsPrice=69.2&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1005</div></td>
        <td><div align="center">篮球</div></td>
        <td><div align="center">30.00</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1005&goodsName=basketball&goodsPrice=30.00&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr bgcolor="#FFFFFF">
        <td><div align="center">1006</div></td>
        <td><div align="center">铅笔</div></td>
        <td><div align="center">88.00</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1006&goodsName=pencil&goodsPrice=88.00&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1007</div></td>
        <td><div align="center">JAVABOOK</div></td>
        <td><div align="center">10.00</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1007&goodsName=javabook&goodsPrice=10.00&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1008</div></td>
        <td><div align="center">耐克运动衣</div></td>
        <td><div align="center">550.00</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1008&goodsName=nikecloth&goodsPrice=550.00&goodsAmount=1">购买</a></div></td>
      </tr>
      <tr>
        <td><div align="center">1009</div></td>
        <td><div align="center">USAwatch</div></td>
        <td><div align="center">690.00</div></td>
        <td><div align="center"><a href="/shoppingcarts/servlet/addGoods?goodsId=1009&goodsName=USAwatch&goodsPrice=690.00&goodsAmount=1">购买</a></div></td>
      </tr>
    </table>
    <p align="center"><strong><a href="/shoppingcarts/servlet/viewShoppingCart">查看购物车</a></strong></p>
    <p align="center"><strong><a href="/shoppingcarts/servlet/clearShoppingCart">清空购物车</a></strong></p>
    </body>
    </html>
    <%@ page import="java.sql.*,com.Lirael.Rough.Carts.*,com.Lirael.Rough.Servlet.*,java.util.*,java.sql.*"%>
    <%@ page import="java.util.Iterator" %>
    <jsp:directive.page import="java.util.Iterator;"/>
    <%
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);
    %><HTML>
    <HEAD>
    <TITLE>show the goods in the shoppingcart</TITLE>
    <SCRIPT language="JavaScript">
    function gotonext() {
    document.form1.submit();
    return;
    }
    </SCRIPT>
    </HEAD>
    <BODY><p align="center"><strong>ss</strong></p>
    <table width="600" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCFF99">
      <tr bgcolor="#CCFF99">
        <td width="117"><div align="center" class="style2">goodsId</div></td>
        <td width="145"><div align="center" class="style2">goodsName</div></td>
        <td width="106"><div align="center" class="style2">goodsPrice</div></td>
        <td width="110"><div align="center" class="style2">goodsAmount</div></td>
    <td width="110"><div align="center" class="style2">totalPrice</div></td>
    <td width="110"><div align="center" class="style2">changeAmount</div></td>
    <td width="110"><div align="center" class="style2">----</div></td>
      </tr>
    <% Map  shopCartMap = (Map)request.getAttribute("shopCartMap");
       Iterator it = shopCartMap.keySet().iterator();
    while(it.hasNext())
    {
    String goodsId = (String)it.next();
    CartItem cartItem = (CartItem)shopCartMap.get(goodsId);
    System.out.println(request.getAttribute("shopMapCart"));
    %>
    <form name="form1" method="post" action="/shoppingcarts/servlet/changeAmount" onSubmit="return submitcheck()">
      <tr>
        <td height="42"><div align="center"><%=cartItem.getGoodsId()%></div></td>
        <td><div align="center"><%=cartItem.getGoodsName()%></div></td>
        <td><div align="center"><%=cartItem.getGoodsPrice()%></div></td>
        <td><div align="center"><%=cartItem.getGoodsAmount()%></div></td>
    <td><div align="center"><%=cartItem.getTotalPrice()%></div></td>
    <td><div align="center" class="style3">
          <input name="goodsAmount" type="text" value="<%=cartItem.getGoodsAmount()%>" class="style5" size="4" maxlength="4" onChange="gotonext()">      
          <input name="goodsId" type="hidden" value="<%=cartItem.getGoodsId()%>" >    
      </div></td>
    <td><div align="center"><a href="/shoppingcarts/servlet/deleteGoods?goodsId=<%=cartItem.getGoodsId()%>"></a></div></td>
      </tr>
      </form>
      <%}%>
      <tr>
       <% ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");
            if(shoppingCart != null)
            {%>
             <td colspan="7"><div align="right"><span class="style1">×ܼۣº</span><%=shoppingCart.getAllGoodsPrice()%></div></td>
          <% 
       }
       %> 
      </tr>
    </table>
    <p align="center"><strong><a href="goodslist.jsp"></a> </strong></p>
    <p align="center"><strong><a href="/shoppingcarts/servlet/clearShoppingCart"></a></strong></p>
    </body>
    </html>
      

  6.   

    楼主的ViewShoppingCartServlet.Java 文件中没有那个查询的List,
    楼主好好看看时什么地方出错了吧!~!~
      

  7.   

    我也刚写完购物车,不过是用struts+hibernate写的,
    是不是没有把购物车放在session中
      

  8.   

    {    private static final long serialVersionUID = -4264156787271103152L;    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
        {
            String goodsId = request.getParameter("goodsId");
            String goodsName = request.getParameter("goodsName");
            
            String goodsPriceStr = request.getParameter("goodsPrice");
            double goodsPrice = Double.parseDouble(goodsPriceStr);
            String goodsAmountStr = request.getParameter("goodsAmount");
            int goodsAmount = Integer.parseInt(goodsAmountStr);
            
            HttpSession session = request.getSession();
            ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute("shoppingCart");
            
            if( shoppingCart == null )
            {
                shoppingCart = new ShoppingCart();
                session.setAttribute("shoppingCart", shoppingCart);
            }
            这段相当有问题.shoppingCart是空,就设置为session范围.?什么意思.要把这句session.set......放到下面.shoppingCart.add.........的后面,要不你的购物车总是空的.还有JSP页面,居然还要自己设置ID? 设置一个 goodList时,取出里面的 good自然有ID了.应该是没 有DB连接了.
            shoppingCart.addGoods(goodsId, goodsName, goodsAmount, goodsPrice);
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("/goodslist.jsp");
            requestDispatcher.forward(request,response);    
        }    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
        {
            doGet( request, response );
        }}
    老帖,也回复下