购物车,Servlet如下:public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
String foodID=request.getParameter("foodID");
HttpSession sess=request.getSession();
Map<String, CartItemBean> cart=(Map<String, CartItemBean>)sess.getAttribute("CarLog");
FoodBean foodBean=(FoodBean)sess.getAttribute("foodInfo");
if (foodBean==null) {
foodInfoDao fiDao=new foodInfoDaoImpl();
foodBean=fiDao.findFoodInfoByID(foodID);
}
if (cart==null) {
cart=new HashMap<String, CartItemBean>();
sess.setAttribute("CarLog", cart);
}
CartItemBean cartItemBean=(CartItemBean)cart.get(foodBean.getFoodID());
if (cartItemBean==null) {
cart.put(foodBean.getFoodID(), new CartItemBean(foodBean));
}
else {
cartItemBean.setQuantity(cartItemBean.getQuantity()+1);
}
request.getRequestDispatcher("shopCart.jsp").forward(request, response);
}JSP中的代码如下:<%
       Map<String,CartItemBean> cart;
        cart=(Map<String,CartItemBean>)session.getAttribute("CarLog");
       if(cart==null||cart.size()==0)
       {
       out.println("<tr><td colspan='5'><a href='show.jsp'>您的购物车是空的,请返回选择商品</a></td></tr>");
       }
       else{
       double total=0;
       for(String key:cart.keySet())
       {
       CartItemBean cartItemBean=cart.get(key);
       double subtotal=cartItemBean.getQuantity()*cartItemBean.getFood().getFoodPrice();
       total+=subtotal;
      %>
      <tr height="25">
        <td><%=cartItemBean.getFood().getFoodID() %></td>
        <td><%=cartItemBean.getFood().getFoodName() %></td>
        <td>&yen;<%=cartItemBean.getFood().getFoodPrice() %></td>
        <td><%=cartItemBean.getQuantity() %></td>
        <td>&yen;<%=subtotal %></td>
      </tr>
      <%} %>
      <tr height="30">
        <td width="60"  bgcolor="#c0c0c0">合计</td>
        <td width="500"  bgcolor="#c0c0c0">-</td>
        <td width="80"  bgcolor="#c0c0c0">-</td>
        <td width="80"  bgcolor="#c0c0c0">-</td>
        <td width="80"  bgcolor="#c0c0c0">&yen;<%=total %></td>
      </tr>
      <%} %>  
我不添加任何商品,按照思路来说应该是运行out.println("<tr><td colspan='5'><a href='show.jsp'>您的购物车是空的,请返回选择商品</a></td></tr>");可是总是报错,空指针异常严重: Servlet.service() for servlet AddFoodToCart threw exception
java.lang.NullPointerException
at restrant.src.Servlet.AddFoodToCart.doPost(AddFoodToCart.java:79)
at restrant.src.Servlet.AddFoodToCart.doGet(AddFoodToCart.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)求解~!!!!

解决方案 »

  1.   

    at restrant.src.Servlet.AddFoodToCart.doPost(AddFoodToCart.java:79)看看这行在做什么
      

  2.   

    这一行
    at restrant.src.Servlet.AddFoodToCart.doPost(AddFoodToCart.java:79)
    就是这一句话
    实例化了一个购物车对象,然后接收Map获取的session,根据id来查找是否在购物车中存在
    CartItemBean cartItemBean=(CartItemBean)cart.get(foodBean.getFoodID());
      

  3.   


    在(AddFoodToCart.java:79)这句前面打上这两句 看看是不是有 null 的
    System.out.println("cart====="+cart);
    System.out.println(""foodBean===+foodBean);null.get 就会 java.lang.NullPointerException
      

  4.   

    已经解决
    因为在Servlet中 FoodBean foodBean=(FoodBean)sess.getAttribute("foodInfo");
    没有取到值,所以会报错,加一个if判断就可以了~~ 谢谢各位
      

  5.   

    不好意思这句写错了 应该是
    System.out.println("foodBean==="+foodBean);