从JavaScript返回数据到Servlet?可能?

时间:2015-02-09 16:58:24

标签: javascript mysql servlets jdbc drop-down-menu

我正在尝试用JDBC实现一个Servlet 我的想法是,当用户使用登录表单登录时,他将能够看到MySQL中可用数据库的列表。所以我在Servlet上动态生成它。使用下拉列表向用户显示该数据库 现在,当用户点击任何可用的数据库时,我使用JavaScript来检查用户选择了哪个数据库。现在我想从JavaScript中将该值检索到我的servlet中。根据所选数据库,我想向用户显示数据库中的可用表列表。 这可能吗?如果没有,那么还有其他方法吗?

以下是动态生成下拉菜单的示例代码。

                ResultSet r = dbmetadata.getCatalogs();
                ResultSetMetaData metadata = r.getMetaData();
                int colCount = metadata.getColumnCount();
                int i;

                out.println("<select id='db' name='db'onChange= 'myFunction();'>");
                out.println("<option value = -1>--Select Database--</option>");
                int value = 1;
                while(r.next())
                {   
                    for(i=1;i<=colCount;i++)
                    {   
                        out.println("<option value = " + value + ">" +  r.getString(i)  + "</option>");
                    }
                    k++;
                }
                out.println("</select>");

JavaScript代码看起来像这样:

function myFunction()
{
var select = document.getElementById("db");
var dbSelected = select.options[select.selectedIndex].text;
var x = document.getElementById("dbs");
x.innerHTML = "You have selected " + dbSelected;
};

谢谢你:)

1 个答案:

答案 0 :(得分:0)

您可以通过

向servlet发送帖子请求
  // Send the data using post
    var posting = $.post("/GetAllTables",{dbname:"myydb"});

    // When the POST request is done..
   // data: The output printed in servlet
     posting.done(function(data) {

            // Put the results in a div
            $("#view").append(data+"<br/>");

           //you can also take data string and split it with ,(comma) and append this tablenames to a dropdown etc.

     });

在servlet中

String dbName=request,getParameter("dbName");

//generate all table name in string like

String tables="table1,table2,table3"

// Get PrintWriter obj using getWriter() in HttpServletResponse
PrintWriter pw=res.getWriter();

// Print, that's it!!
pw.println(tables);

您也可以使用ajax代替post请求,send也可以在json中发送表名

同时检查Using PostUsing Ajax