首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

初学者的3个简单代码有关问题

2012-01-20 
菜鸟的3个简单代码问题JSP1.JSPhtmlheadtitle 使用session制作在线购物 /title/headbodyform

菜鸟的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并不是一种有序存储结构,不知道是不是应该这么理解

期待高人解释第二个问题

热点排行