如何从数据库中动态填充JSP页面中的下拉列表?

时间:2014-06-06 04:34:58

标签: java jquery html ajax jsp

我第一次使用JSPAjax。我试图从数据库中获取一个列数据,并使用Ajax调用在我的JSP页面的下拉列表中填充它。我不想刷新页面,因此我正在进行Ajax调用。

这是我的jsfiddle,它有“处理”按钮,一旦我点击“处理”按钮,它就会显示一个空的下拉列表。这是我的另一个test.jsp页面。

我有一个account表,我需要从jsp中创建这个选择查询 -

SELECT USERS FROM ACCOUNT;

当我点击Process按钮时,我需要使用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数据?意思是,我需要在Process按钮上调用这个JSP,然后传递我们获得的所有用户数据,然后动态填充下拉列表?

假设我从数据库中获得10个USERS,那么下拉列表中应该有10个用户。

这可能吗?

2 个答案:

答案 0 :(得分:2)

当您通过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页面。

另见:

答案 1 :(得分:0)

编写java代码是jsp很不好的习惯,使用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 
                }
            });