【问题标题】:How to dynamically populate the drop down list in my JSP page from the database?如何从数据库中动态填充我的 JSP 页面中的下拉列表?
【发布时间】:2014-07-27 06:35:35
【问题描述】:

我是第一次与JSPAjax 合作。我正在尝试从数据库中获取一列数据,并使用 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();
    }
%>

问题陈述:-

现在我的问题是,如何在test.jsp 页面的下拉列表中填充从数据库中获取的所有USERS 数据?意思是,我需要以某种方式在 Process 按钮单击时调用此 JSP,然后传递我们获得的所有用户数据,然后动态填充下拉列表?

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

这可能吗?

【问题讨论】:

  • 你应该看看这个链接:stackoverflow.com/questions/22550913/…
  • @ncdreamy 感谢您的链接。这与我正在做的事情很接近。但是有什么方法可以将users数据从databasecall.jsp页面传递到test.jsp页面,然后迭代并显示结果?
  • @akiiddweeber 你有答案吗?
  • @Santino'Sonny'Corleone,该解决方案对我不起作用:(

标签: java jquery html ajax jsp


【解决方案1】:

用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 
                }
            });

【讨论】:

  • 感谢您的建议。我可以肯定地用 Java 而不是 JSP 编写相同的代码,假设它是 abc.java 那么我将如何在我当前的示例中使用它?
  • 比方说,它从 java 代码返回给我所有用户的列表。
  • 我在答案中打错了一些东西,现在我更正了,检查你在响应中得到的数据值,只需循环出来并使用 jquery 将该值分配给 jsp 中的相应字段
【解决方案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页面。

另见:

【讨论】:

  • 感谢马苏德的帮助。就我而言,我从databasecall.jsp 页面获取USERS 数据,而我的html 代码在test.jsp 页面中。有什么办法,我可以将某个对象中的USERS 数据传递给test.jsp 页面,然后对其进行迭代并将结果填充到下拉列表中。在您的示例中,我猜它必须在相同的 jsp 页面、数据库调用和实际的 html 中。
  • @akiiddweeber,您可以将数据存储在requestsession 属性上。
  • 我明白了。因为我只是 JSP 的初学者。如果可能的话,你能提供一个例子吗?
  • 在上面的例子中,你的代码在.java 对吗?假设数据库逻辑在databasecall.java 中。现在我将如何通过 Ajax 从 test.jsp 调用这个 databasecall.java 类并填充它?
  • @akiiddweeber,是的 Servlet 是 .java 文件。查看我的答案底部的链接以获取详细答案。
猜你喜欢
  • 1970-01-01
  • 2018-09-29
  • 2014-08-10
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2011-05-03
相关资源
最近更新 更多