我正在尝试用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;
};
谢谢你:)
答案 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 Post,Using Ajax