昨天的问题依然没有解决,就是将数据库中的产品名信息读出来,然后在页面被请求的时候动态的将得到的产品名信息以下拉列表的形式显示出来。
    我的下拉列表代码如下:<select name=productionName id="textfield2" size=1>
</select>
    后台取数据库的代码如下:public class selectProduct extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
List<String> list = new ArrayList<String>();
String sql = "select product_name from product"; ConnectionFactory newconn = new ConnectionFactory();
conn = newconn.getConnection();
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
try {
while (rs.next()) {
String st1 =rs.getString("product_name");
list.add(st1);
}
} catch (SQLException e) {
e.printStackTrace();
}        request.setAttribute("list", list);
String URL = "/jsp/ReleaseDepend.jsp";
request.getRequestDispatcher(URL).forward(request, response);
}
}我想问:1.因为这个数据是要在jsp页面显示之前取出的,所以我想用由servlet跳转到jsp页面的方法做,这样做行么。
                2.我现在将Resultset的结果存到一个list当中了,但是不知道自己存的方法是否正确。
                3.我将数据如何传递到jsp页面,传递到jsp页面后如何将数据显示到select的option中。

解决方案 »

  1.   

    问题1:jsp页面也可以直接dao操作,所以不存在之前取出,之后取出的问题!你这样取出来也没有问题,只要你在页面上能得到!
    问题2:不知道,可以试试啊!为什么不试,先来发帖呢!惰性不好的啊!
    问题3:jsp可以<%%>中写循环然后外面+html的方式写出来!
    for(int j=0;j<v_option.size();j++){
    com.sictech.dbpool.HashtableExtend he=(com.sictech.dbpool.HashtableExtend) v_option.elementAt(j);
    %>
    <option value="<%=he.getString("ID")%>"><%=he.getString("NAME")%></option>
    <%
    }
    %>
      

  2.   


    <s:select list="aaaList" listKey="value" listValue="label" />在Action中写一个方法
    public List<LabelValueBean> getAaaList() {
       // your code
    }
      

  3.   


    <select name=productionName id="textfield2" size=1>
         <c:forEach items="${list}" var="data">
                 <option value="${data}">${data}</option>
         </c:forEach>
    </select>
      

  4.   

       你的结果不是都在request中存好了   直接在页面拿出来循环显示就行了~
      

  5.   

    2楼的朋友
    第二个问题,我想你应该先看看我的代码,再评论。我已经将自己写的代码贴出来了。
    5楼的朋友,昨天我试过你说的方法了,但是一直弄的是结果无法显示,我将Resultset的结果传递过来,用循环的方法显示了一下没成功,找了半天没找到结果。后来有一个朋友说因为在后台Resultset对象关闭的时候将Resultset中的内容清空了,可是我已经重新复制了啊。怎么能清空呢。
      

  6.   

    你可以在jsp页面中把存好的list打印出来,如果没有数据显示那就说明你的list里面的值没有放进去。list里面有值你就直接循环赋给select
    <%
       for(int i=0;i<list.size();++i)
       {
    %>
    option value="<%=list.get(i)%>"><%=list.get(i)%></option><%
    }
    %>
      

  7.   

    <select name=productionName >
         <c:forEach items="${list}" var="c">
                 <option value="${c}">${c}</option>
         </c:forEach>
    </select>
      

  8.   

    <select id="textfield2" name="productionName">
      <%java.util.List list = (java.util.List) request.getAttribute("list");
      <%for(int i=0; i<list.size(); i++){%>
        <option value='<%=list.get(i)%>' <%if(i==1){ out.print(" selected");}%>>
    <%=list.get(i)%>
        </option>
      <% }%>
    </select>