我是第一次使用 JSP
和 Ajax
。我正在尝试从数据库获取一列数据,并使用 Ajax 调用将其填充到 JSP 页面的下拉列表中。我不想刷新页面,所以这就是原因,我正在进行 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();
}
%>
问题陈述:-
现在我的问题是,如何将从数据库获取的所有 USERS
数据填充到 test.jsp
页面的下拉列表中?意思是,我需要在单击“进程”按钮时调用此 JSP,然后传递我们获得的所有用户数据,然后动态填充下拉列表?
假设如果我从数据库中获取 10 个用户,那么下拉列表中应该有 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
页面。
另请参阅:
关于java - 如何从数据库动态填充 JSP 页面中的下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074221/