现在的问题是,当我点击查看购物车的时候页面不跳转,或者有时候干脆跳出空指针,具体问题出现在以下文件
menageshopcart.jsp
ViewShoppingCartServlet.Java代码见附件,希望大家能帮忙~
包含2个javaBeans文件 和 5个用于增加,删除,清空,查看等控制作用的servlet文件,还有2个是视图层的jsp文件上传不了附件,能帮忙的人留下邮箱吧,我把源代码发给你们,谢谢了~~通宵等待结果~~~
menageshopcart.jsp
ViewShoppingCartServlet.Java代码见附件,希望大家能帮忙~
包含2个javaBeans文件 和 5个用于增加,删除,清空,查看等控制作用的servlet文件,还有2个是视图层的jsp文件上传不了附件,能帮忙的人留下邮箱吧,我把源代码发给你们,谢谢了~~通宵等待结果~~~
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;
}
}
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>();
}
}
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 );
}}
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 );
}}
<%@ 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>
楼主好好看看时什么地方出错了吧!~!~
是不是没有把购物车放在session中
{
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 );
}}
老帖,也回复下