这个问题原先问过一次可能是因为我没说的太明白所以也没找到答案……这次上图 上代码。我想编写一个简单的材料管理系统,所以页面需要一个动态的select菜单(不仅仅要连接到数据库上)这个图上可以看到有一个下拉菜单,因为是要运用到材料管理系统所以需要操作N个项目(N不确定),这样我就希望可以JSP能自动生成select菜单(自动生成的菜单内项目和原有项目一样,为的是再选择需要更改的项目数)我的代码如下:<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="conn_idname" class="com.connection_idname" /><%String sql="select id_name from tab_name";
ResultSet rs=conn_idname.executeQuery(sql);%>
<form action="result.jsp" method="post">
<select name="id_name">
<option value="">请选择<%try{
while(rs.next()){
// String id_name=rs.getString("id_name");

%>

<option value="<%=rs.getString("id_name") %>"><%=rs.getString("id_name") %>
</option>
<%
}
}catch(Exception e){}
%>
</select>
请输入订货量:
<input type="text" name="num_text">
<br><input type="submit" value="enter">
</form>
</body>
</html>
 
下面说说数据进行合并的问题,当我从第一页(也就是上面的代码)中的到需要处理的N个数据,这时候从数据库中返还回这些物品需要的材料,这些材料中肯东会有重复的,如何能让这些重复的数据进行叠加,不重复的罗列在数据下面。刚开始我想用hashtable,例如:我选择了4个项目进行操作 这个时候第一个项目所需要的材料值放进hashtable-1中第二项放进hashtable2中,将hashtable1和hashtable2进行比较操作一样的累加不一样的罗列更新hashtable1,然后将hashtable2清空放进第三个项目的数据放进去,再把hashtable2和1比较操作……以此类推得到最终所要的数据。这些只是想法不知道怎么实现,还望有明白的大神进来提点两句。如果描述的还是不明白的话,发通知给我我再解释下,谢谢。

解决方案 »

  1.   

    这个问题可以使用ajax来实现,跟省市联动差不多,给你代码,你自己改改
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <base href="<%=basePath%>">
       
      <title>My JSP 'province.jsp' starting page</title>
       
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">  
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript">
    function loadXMLDoc()
    {
    xmlhttp = null;
    var country = document.getElementById("country");
    country.length = 1;
    country.selectedIndex = 0;
    var province = document.getElementById("province");
    if(province.value == ""){
    return ;
    }
    var url="http://localhost:8080/Ajax_Province/GetProvince?&province="+encodeURIComponent(province.value);
    if (window.XMLHttpRequest) {// code for Firefox, Mozilla, IE7, etc.
    xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp != null) {
    xmlhttp.onreadystatechange = state_Change;
    xmlhttp.open("post", url, true);
    xmlhttp.send(null);
    } else {
    alert("Your browser does not support XMLHTTP.");
    }
    }function state_Change() {
    var province = document.getElementById("province"); 
    var country = document.getElementById("country");
    if (xmlhttp.readyState == 4&&xmlhttp.status == 200) {// 4 = "loaded"
    var serviceData = xmlhttp.responseText;
    if(serviceData == null||serviceData == ""){
    return;
    }
    var s = serviceData.split(",");
    for(var i=0;i<s.length-1;i++){
    country.options[i+1] = new Option(s[i],s[i]);
    }
    }
    }
    </script>
      </head>
      
      <body>
    出生地:<select id="province" onchange="loadXMLDoc()">
    <option value="">------请选择省-----</option>
    <option value="江西省">江西省</option>
    <option value="江苏省">江苏省</option>
    <option value="浙江省">浙江省</option>
    <option value="山东省">山东省</option>
    <option value="辽宁省">辽宁省</option>
    <option value="福建省">福建省</option></select> <select id="country"><option value="">-----请选择市-----</option></select>
      </body>
    </html>
    servlet:
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import com.neusoft.zjl.service.ProvinceService;
    public class GetProvince extends HttpServlet {/**
    * Constructor of the object.
    */
    public GetProvince() {
    super();
    }/**
    * Destruction of the servlet. <br>
    */
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    }/**
    * The doGet method of the servlet. <br>
    *
    * This method is called when a form has its tag value method equals to get.

    * @param request the request send by the client to the server
    * @param response the response send by the server to the client
    * @throws ServletException if an error occurred
    * @throws IOException if an error occurred
    */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {doPost(request, response);
    }/**
    * The doPost method of the servlet. <br>
    *
    * This method is called when a form has its tag value method equals to post.

    * @param request the request send by the client to the server
    * @param response the response send by the server to the client
    * @throws ServletException if an error occurred
    * @throws IOException if an error occurred
    */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    List list = null;
    ProvinceService provinceService = new ProvinceService();
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    String strprovince = request.getParameter("province");
    if(strprovince == null||"".equals(strprovince)){
    return ;
    }
    String province = new String(strprovince.getBytes("ISO-8859-1"),"UTF-8");
    list = provinceService.getCountry(province);//这个是查询数据库的你可以换你的对数据库的操作
    if(list ==null){
    return;
    }
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<list.size();i++){
    String s = (String)list.get(i);
    sb.append(s+",");
    }
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print(sb);
    out.flush();
    out.close();
    }/**
    * Initialization of the servlet. <br>
    *
    * @throws ServletException if an error occurs
    */
    public void init() throws ServletException {
    // Put your code here
    }}
    out.print(sb)这行代码就把你从数据库中得到的数据返回到jsp里了
    然后通过
    var serviceData = xmlhttp.responseText;
    //接收到后台的数据
    if(serviceData == null||serviceData == ""){
    return;
    }
    var s = serviceData.split(",");
    for(var i=0;i<s.length-1;i++){
    country.options[i+1] = new Option(s[i],s[i]);
    }
    //将数据填充到select中
      

  2.   

    额 因为刚接触JSP编程所以掌握的东西有限,正在不断学习当中所以有些东西还不大懂…………