比如当我买第一本书时,页面能正常显示所买的书的信息,但当我买另一本书时,页面显示的还是第一本书的信息,希望哪位好心的大侠帮忙看看,不过代码有点长,谢谢!!!
package buyList;
public class buyList {
public  String name;
public int id;
public int price;
public int book_number;
public String user_name;
}book.jsp
<jsp:include page="function.jsp"/>       
  <%
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=book","sa", "11011"); 
  Statement stmt=con.createStatement();
int id=Integer.parseInt(request.getParameter("id"));
String strSQL="SELECT * FROM book where id="+id;
ResultSet rs = stmt.executeQuery(strSQL);
//out.println(strSQL);

if(rs.next()) {
 
%>
·············
<td colspan=2 align="center"><a href="add1.jsp?id=<%=id%>">放入购物车</a> 
| <a href="javascript:close();">关闭窗口</a>
   
  </tr>
</table>
<%  }
rs.close();
%>add1.jsp
  <%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=book","sa", "11011"); 
  Statement stmt=con.createStatement();
int id=Integer.parseInt(request.getParameter("id"));
String name="";
String sql="SELECT name,price FROM book where id="+id;
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
name=rs.getString("name");
int price=rs.getInt("price");
}
buyList myList=new buyList();
try{
myList.name=name;
myList.id=Integer.parseInt("id");
myList.price=Integer.parseInt("price");
}catch(Exception e){e.printStackTrace();}
myList.user_name="";
myList.book_number=1;
boolean listFlag=true;
//读取购物车的信息
Vector shop=(Vector)session.getValue("shop");
if(shop==null){
//如果原购物车为空,则新建购物车
shop=new Vector();
}
else{
for(int i=0;i<shop.size();i++){
buyList list=(buyList)shop.elementAt(i);
if(list.id==myList.id){
list.book_number++;
shop.setElementAt(list,i);
listFlag=false;
}
}
}
if(listFlag) 
shop.addElement(myList);
session.putValue("shop",shop);
rs.close();
 %>
<div align="center"><b><font size="4" color="#ff0033">成功放入购物车</font></b><br> 
<a href="javascript:window.close()">关闭窗口</a>| 
<a href="list.jsp" target="_blank">查看购物车</a> list.jsp
 <% 
    Vector shop=(Vector)session.getValue("shop"); 
    if(shop==null || shop.size()==0){ 
     %>
<script language=javascript>
alert("你的购物车为空,请先购物!");
window.close();
</script>
<%} %>
<table width="590" border="0">
<tr>
<td width="45%">你的购书情况为:</td>
<td width=55%>
<div align=center>(如果想删除商品,请将数值置零后刷新)</div>
</td>
</tr>
</table><br>
<form name="form1" method="post" action="edit.jsp"><div align="center"> 
</div><table width=590 border=0>
<tr bgcolor=#ff5d26>
<td width=54>序号
</td>
<td width=168><div align=center>书名</div>
</td>
<td width=128><div align=center>单价</div>
</td>
<td width=172><div align=center>数量</div>
</td>
</tr>
<%
for(int i=0;i<shop.size();i++){
buyList myList=(buyList)shop.elementAt(i);
 %>
<tr bgcolor=#ffd6c8><td width=54>
<div align="center"><%=i+1%></div>
</td>
<td width="169">
<div align="center">
<a href="javascript:detail(<%=myList.id%>)"><%=myList.name%></a></div>
</td>
<td width=128>
<div align="center">&yen;<%=myList.price%></div>
</td>
<td width=172>
<div align="center">
<input type="text" name="num<%=i%>" size=7 value="<%=myList.book_number%>">
</div></td></tr>
<%} %>
</table><table width=590>
<tr>
<td width=150>&nbsp;</td>
<td width=86>
<input type="submit" name="Submit" value="刷新">
</td>
<td width=101>&nbsp;</td>
<td width=285><a href="clear.jsp">清空购物车</a>|
<a href="index.jsp">继续购书</a>|<a href="check.jsp">结账</a>
</td></tr></table></form>
<script language="javascript">
function detail(a){
window.open("book.jsp?id="+a,"MyWindow","toolbar=no",left=150,top=280
width=500,height=230,menubar=no,systemMenu=no");
}</script>

解决方案 »

  1.   

    看不出啥问题
    自己调试一下
    jsp中用System.out.printl()打印信息
      

  2.   

    没有用过Vector的这些过时的方法
    看逻辑也非常复杂,很乱
      

  3.   

    看了一下就 很麻烦 不应该把JDBC 写在JSP里 你应该先得到所有书 在显示在JSP里,点某一本书的时候得传个这本书(比如ID)参数在Dao 从Dao得到这本书的属性  在JSP里显示完全 新手 回帖!---
      

  4.   

    没时间细看你的代码,应该是把选择的物品以vector存到session里面,我做的就是这样做的,你认真检查一下你的代码