【发布时间】:2015-01-08 14:48:39
【问题描述】:
在我的项目中,我将查询结果从数据库获取到我的 servlet 并在设置 ResultSet 的属性后将结果传递给 JSP,然后在 JSP 中访问它。但不知何故我能够设置和访问我在 JSP 和 servlet 中的所有其他属性,除了 ResultSet。
这是我的数据库访问函数getcart()
public static ResultSet getCart(int item,int cust){
ResultSet rs=null,res=null;
String i_name;
int price;
try{
rs=stmnt.executeQuery("SELECT i_name,price FROM items WHERE i_id="+item);
rs.next();
i_name=rs.getString(1);
price=rs.getInt(2);
stmnt.executeUpdate("INSERT INTO cart(prod,price,c_id,i_id) VALUES('"+i_name+"',"+price+","+cust+","+item+")");
res=stmnt.executeQuery("SELECT prod,price,count(*) FROM cart WHERE c_id="+cust+" GROUP BY i_id");
res.next();
}catch(SQLException e){}
return res;
}
这里是 JSP
<%ResultSet r=(ResultSet)request.getAttribute("cart");%>
<div id="pageContent">
<div style="margin:24px; text-align:left;"><br />
<table width="100%" border="2" cellspacing="0" id ="table1">
<tr>
<td width="15%" bgcolor="#000000" align="center"><strong>Product</strong></td>
<td width="10%" bgcolor="#000000" align="center"><strong>Price</strong></td>
<td width="12%" bgcolor="#000000" align="center"><strong>Quantity</strong></td>
<!--<td width="9%" bgcolor="#000000" align="center"><strong>Total</strong></td>-->
</tr>
<%while(r.next()){%>
<tr class="spaceUnder">
<td width="15%" bgcolor="#FFFFFF" align="center"><font color="#000"> <%=re.getString(1)%></font></td>
<td width="10%" bgcolor="#FFFFFF" align="center"><font color="#000"> <%=re.getInt(2)%></font></td>
<td width="12%" bgcolor="#FFFFFF" align="center"><font color="#000"> <%=re.getInt(3)%> </font></td>
</tr>
<%}%>
</table>
<div class="container">
<left><h3 style="color:#FFFFF;padding-top:30px;"><font color="#000">Total: <%=total%> </font></h3></left>
</div>
</div>
</div>
这里是 servlet sn-p:
res=accessDB.getCart(it,ci);
request.setAttribute("cart",res);
view=request.getRequestDispatcher("cart.jsp");
view.forward(request, response);
我不知道发生了什么?我现在在这上面花了很多时间。而且我的数据库不是空的。所以 res.next() 是有效的。
有一件事在起作用。当我使用getInt 和getString 在我的servlet 代码中分解我的ResultSet,然后将它们单独发送到JSP 而不是发送整个ResultSet,然后getAttribute JSP 工作,我可以打印我的结果。但不知道为什么整个 ResultSet 不去。我使用的是 Netbeans 8.0.1。
请帮忙。
【问题讨论】:
-
您可以将其存储在会话
session.setAttribute("cart", res);中(您可以通过request.getSession().setAttribute("cart");获取HttpSession 然后在您的jsp 中检索它,如session.getAttribute("cart");然后在检索后将其从您的jsp 中的会话中删除,如session.removeAttribute("cart"); -
您不应该使用结果集。返回一个 dto。
-
您是否试图找到一种方法来欺骗 JVM 泄漏内存?因为你成功了。
-
“SQL 注入”是否敲响了警钟?
-
@RC。不,有人发了
SELECT RING_BELL...WHERE ID=1; DROP TABLE BELLS --。
标签: java jsp servlets jdbc setattribute