如果纯是用jsp做,好像不可能。jsp能调用自身么?除非你数据库里面的数据都固定了,像上面用javacript写的那样,不再向库中添加数据了。

解决方案 »

  1.   

    可以定义一个IFRAME
    第一个下拉菜单OnChange中使IFRAME调用另一页面进行数据库处理
    并生成第二个下拉框的选项
      

  2.   

    我给你找了一个下拉框联动的例子!你看看吧
    下拉框联动有两个java类,两个jsp页面,和一个js组成。MultiSelect.java
    该类用于生成实现联动需要的Array数组package select;import java.util.*;
    import java.sql.*;
    import java.io.*;public class MultiSelect {    /**
         *产生JavaScript中用于联动的array代码
         *以省市为例
         *一般为了javascript程序的方便,建议输出格式为:
         *subcat1[subcat1.length] = new Array("江阴","12.10","12");
         *其中"江阴"的值为"12.10","12"对应江苏省,越大的范围的值越往后
         *subcat1[subcat1.length] = new Array("常州","12.11","12");
         **/
        public static String getArray(String name, String sql) throws java.sql.SQLException {
            Connection conn=null;
            try {
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test", "test", "test");
            } catch (java.lang.ClassNotFoundException e) {
                System.err.print("ClassNotFoundException: " + e.getMessage());
            }
            Statement stmt = conn.createStatement();
            ResultSet rs=stmt.executeQuery(sql);
            StringBuffer sb = new StringBuffer();        while(rs.next()){
                sb.append(name + "[" + name + ".length] = new Array(" + getString(rs.getString(0),rs.getString(1),rs.getString(2)) + ");\n");
            }        return sb.toString();    }    private static String getString(String s1,String s2,String s3) {        String temp = "\"" + s1 + "\",\""+s2+"\",\""+s3+"\"";
            return temp;
        }
    }
    --------------------------------------------------------------------------------
    SelectJS 该类主要是用来生成sql语句。
    package select;public class SelectJS {    /**
         * 写出sql,调用
         * @param name 数组名称
         * @return
         * @throws java.sql.SQLException
         */
        public static String getProducts(String name) throws java.sql.SQLException {
            return MultiSelect.getArray(name,
                                        "select describe,code,fcode from testone "
                                        );
        }}---------------------------------------------------------------------------------
    citys.jsp主要是用来得到Array数组<%@ page contentType="text/html;charset=GB2312" %>
    <%@ page import="select.*"%>
    var citys = new Array();
    <%=SelectJs.getDealerCity("citys")%>-----------------------------------------------------------------------------------
    select.js 主要是用来显示下拉框中的数据function clearselect(Aa){    clearList(Aa);    Aa.options[Aa.length] = new Option("没有回答", "");} 
    //use "" to clear all:(值的索引为1)//Aa为被联动的select,//locationid为主联动值,//arr为用于生成的Array,//index1为Array中用于比较主联动值的索引function changelocation1(Aa,locationid,arr,index1){
        clearselect(Aa);
        var i;
        for (i=0;i < arr.length; i++){
      if (arr[i][index1] == locationid ){ 
       Aa.options[Aa.length] = new Option(arr[i][0], arr[i][1]);
      } 
     }

     //from chinaquestfunction clearList(ctrl){ if (document.all) {  for(;ctrl.options.length>0;)   ctrl.options.remove(ctrl.options.length-1); }else{  for(;ctrl.options.length>0;)   ctrl.options[ctrl.options.length-1] = null; }
    }-------------------------------------------------------------------------------------
    selecttest.jsp 进行页面使用<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <script language="JavaScript" src="citys.jsp"></script>
    <script language="JavaScript" src="select.js"></script>
    <body>
    <form method="post">
     <select name="sel_brand" onchange="changelocation1(this.form.elements['sel_city'],this.value,citys,2);">
     <%
     String sql="select code,Describe from testone ";
     ResultSet rs=stmt.executeQuery(sql);
     while(rs.next()) {
     %>
         <option value="<%=rs.getString(0)%>"><%=rs.getString(1)%></option>
     <% } %>
        </select>
     <select name="sel_city">
     <option value="">没有回答</option>
     </select>
    </form>
    </body>
    </html>
      

  3.   

    可以,两种做法,
    1、整个页面刷新,重新去数据库取值。
    2、事先将所有选项取出放在页面上,如同ukyer说得一样。
      

  4.   

    小弟我是这么写的,很简陋,大家多提意见 function change(str1,str2)
     {
    str2.value=str1.value
     }<td width="153" align="right" height="30"><b>新预定软件编号:</b></td>
                    <td width="284" height="30">                 <select size="1" name="select1" onchange="change(select1,select2)">
                         <%                   String sFileName = "*";
    String sTableName = "SoftInfo";


    ResultSet rs = null;
    rs = test.executeQuery(sFileName,sTableName); while(rs.next())
    {
    String dd=rs.getString("Softid");   
            %> 
                         <option value='<%=dd%>'><%=rs.getString("SoftID")%></option>                   
    <%
    }
    rs.close(); %>                </select>                 </td>
                  </tr>
                  <tr> 
                    <td width="153" align="right" height="18"><b>新预定软件名称:</b></td>
                    <td width="284" height="15"> 
                          <select size="1" name="select2" onchange="change(select2,select1)">
                           <%rs = test.executeQuery(sFileName,sTableName);  
                     while(rs.next())
    {
      
            %> 
                    
      
                    <option value='<%=rs.getString("SoftID")%>'><%=rs.getString("Softname")%>
                    </option>
                     <% }

    rs.close();
    %></select>
      

  5.   

    是纯用的jsp.方法有点丑,不过好处是容易
    ^_^嗨嗨
      

  6.   

    如果想用JAVASCRIPT实现,要写一个长长的JAVASCRIPT,大家可能极讨厌这个东西,用JSP实现,刷幕丑用FRAME实现吧,或者用IFRAME实现, 可以掩盖一下,不会那么丑,一个FRAME中装一个小JSP
    用APPLET,也不是太简单.肯定还有更好的办法的.
      

  7.   

    直接能用的。
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    <style type="text/css">
    body{font-family:Courier New, Courier}
    select{font-size:8pt;font-family:Courier New, Courier}
    input{font-size:8pt;font-family:Courier New, Courier}
    </style>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var Name=new Array(3);
    var Value=new Array(3);
    Name[1]=new Array("Zosatapo1","Zosatapo2","Zosatapo3","Zosatapo4");
    Name[2]=new Array("Reic Yang1","Reic Yang2","Reic Yang3","Reic Yang4");function change()
    {
    selIndex=document.all("test").selectedIndex;
    if(document.all("test").selectedIndex==0)
     return;for(i=document.all("test").options.length-1;i>-1;i--)
    {
     document.all("test").options.remove(i);
    } for(i=0;i<Name[selIndex].length;i++)
    {
    document.all("test").options.add(new Option(Name[selIndex][i],"name"+i));
    }}function changeEx(){
    for(i=document.all("sub").options.length;i>0;i--)
    {
    document.all("sub").options.remove(i-1);
    }
    if(document.all("main").selectedIndex==0){
    document.all("sub").options.add(new Option("==========","-1"));
    return;}
    selIndex=document.all("main").selectedIndex;for(i=0;i<Name[selIndex].length;i++)
    {
    document.all("sub").options.add(new Option(Name[selIndex][i],"name"+i));
    }}function reset(){
    for(i=document.all("test").options.length-1;i>-1;i--)
    {
     document.all("test").options.remove(i);
    }document.all("test").options.add(new Option("==========","-1"));document.all("test").options.add(new Option("Zosatapo","1"));document.all("test").options.add(new Option("Reic Yang","2"));}function display(object){
    alert(object.options[object.selectedIndex].text+" "+object.options[object.selectedIndex].value);
    }
    //-->
    </SCRIPT>
    </HEAD><BODY BGCOLOR="#FFFFFF">
    First Sample:<br><font color="blue">All items will change After you Selected!</font><br>
    <SELECT id="test"  onchange="change();">
    <option value="-1"  selected>==========
    <option  value="1">Zosatapo
    <option  value="2">Reic Yang
    </SELECT><input name="Reset Select" type="button" value="Reset Select" onclick="reset();" ><br><br>Second Sample:<br><font color="blue">You selected Item in Main Select will change the Sub select Content!</font><br>
    Main Select:<SELECT id="main"  onchange="changeEx();">
    <option value="-1"  selected>==========
    <option  value="1">Zosatapo
    <option  value="2">Reic Yang
    </SELECT>Sub Select:<SELECT id="sub" onchange="display(this);">
    <option value="-1"  selected>==========
    </SELECT><br><br>
    </BODY>
    </HTML>