[英]How to dynamically populate the drop down list in my JSP page from the database?
我是第一次使用JSP
和Ajax
。 我試圖從數據庫中獲取一列數據,並使用Ajax調用將其填充到我的JSP頁面的下拉列表中。 我不想刷新頁面,所以這就是原因,我正在撥打a Ajax。
這是我的jsfiddle ,它具有“處理”按鈕,單擊“處理”按鈕后,它將立即顯示一個空的下拉列表。 這是在我的另一個test.jsp
頁面中。
我有一個表作為account
,我需要通過jsp進行選擇查詢-
SELECT USERS FROM ACCOUNT;
單擊“處理”按鈕后,我需要使用Ajax在POSTGRESQL數據庫上執行上述SQL查詢。 無論用戶是什么,我都從數據庫中恢復過來,我需要在下拉列表中填充這些USERS
,如上面的jsfiddle所示。
以下是我的JSP頁面(databasecall.jsp),其中我正在調用數據庫以獲取所有USERS
-
<%@page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<%
response.setContentType("application/json");
try {
// Step 1. Load the JDBC driver
Class.forName("org.postgresql.Driver");
// Step 2. Create a Connection object
Connection con = DriverManager.getConnection(
"jdbc:postgresql://localhost/test","root", "root!");
Statement s = con.createStatement();
String sql ="SELECT USERS FROM ACCOUNT";
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
// what to do here?
}
rs.close();
s.close();
con.close();
} catch (Exception e3) {
e3.printStackTrace();
}
%>
問題陳述:-
現在的問題是,如何在test.jsp
頁面的下拉列表中填充從數據庫獲得的所有USERS
數據? 意思是,我需要以某種方式在“處理”按鈕單擊上調用此JSP,然后傳遞我們獲得的所有用戶數據,然后動態填充下拉列表?
假設如果我從數據庫中獲得10個USERS,則下拉列表中應該有10個用戶。
這可能嗎?
通過Ajax調用獲取數據時,應在Servlet
上填充數據。
@WebServlet("/populate")
public class PopulateData extends HttpServlet{
public void doGet(....){
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:postgresql://localhost/test","root", "root!");
Statement s = con.createStatement();
String sql ="SELECT USERS FROM ACCOUNT";
ResultSet rs = s.executeQuery(sql);
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("USERS"));
}
String json = new Gson().toJson(list);
response.getWriter().write(json);
}
}
現在,您可以通過ajax調用將json數據填充到test.jsp
頁面。
用jsp編寫Java代碼是非常不好的習慣,使用jquery並用Java代碼完成所有DB工作
$.ajax({
type: "POST",
url: "URL",
data: "firstName=Aidy&lastName=F", // the data in form-encoded format, ie as it would appear on a querystring
success: function (data) {
assign the return value which is in data to your hmtl
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.