菜鸟的3个简单代码问题
JSP1.JSP
<html>
<head>
<title> 使用session制作在线购物 </title>
</head>
<body>
<form action= "jsp2.jsp " method=post>
<table border=1>
<tr>
<td> 商品名: </td>
<td> 价格: </td>
<td> 输入数量 </td>
</tr>
<tr>
<td> 商品1: </td>
<td> 1500 </td>
<td> <input type= "text " name=good1> </td>
</tr>
<tr>
<td> 商品2: </td>
<td> 1500 </td>
<td> <input type= "text " name=good2> </td>
</tr>
<tr>
<td> 商品3: </td>
<td> 1500 </td>
<td> <input type= "text " name=good3> </td>
</tr>
<tr>
<td> 商品4: </td>
<td> 1500 </td>
<td> <input type= "text " name=good4> </td>
</tr>
<tr> <td> 商品5: </td>
<td> 1500 </td> <td>
<input type= "text " name=good5> </td>
</tr>
<tr> <td cospan=3 align=center>
<input type= "submit " value= "确定 ">
<input type= "reset " value= "重新输入 "> </td>
</tr>
</table>
</form>
</body>
</html>
JSP2.JSP
<html>
<head>
<title> 在线购物 </title>
</head>
<body>
<%@page import= "java.util.* " %>
<%
String name,count;
request.getSession(true);
Enumeration goods=request.getParameterNames();
while(goods.hasMoreElements())
{
name=(String)goods.nextElement();
count=request.getParameter(name);
session.putValue(name,count);
}
String sname[]=session.getValueNames();
out.print( " <font size=5 color=green> 购买商品列表 </font> <p> ");
for(int i=0;i <sname.length;i++)
{
out.print(sname[i]+ " = ");
out.print(session.getValue(sname[i])+ " <br> ");
}
%>
</body>
</html>
问题1:while中 session.putValue(name,count);为什么count能多次放入name中?
问题2:最后我在商品数量都输入1后,显示
购买商品列表
good4 =1
good5 =1
good2 =1
good3 =1
good1 =1
为什么顺序会错乱呢?
[解决办法]
帮你顶吧,我也刚才接触jsp呵呵,从.net 转过来
[解决办法]
1,session就象一个hashtable,是一个容器,里面可以储存很多很多元素。
你的每个name和该name对应的count就是一组一组不同的元素。
2,顺序没有乱,因为它就是按这个排序的。
[解决办法]
第一个问题:name和value都是变量,具体值是在循环中取出的,分别对应的是表单提交上来的name和value,所以每次赋值的name和value都是不同的,因此count多次放入的name并不是同一个name,而是循环中当前取出的name,如果碰巧name相同,那就会被新count覆盖掉之前的count了
第二个问题:这个我也说不好了,或许是因为存入和取出session都是寄存在内存中,而放置的时候并非是顺序排列的缘故吧,也就是说session并不是一种有序存储结构,不知道是不是应该这么理解
期待高人解释第二个问题