【问题标题】:How to fetch the dropdown values from database and display in jsp如何从数据库中获取下拉值并在jsp中显示
【发布时间】:2014-04-28 08:34:24
【问题描述】:

我在 jsp 中有两个下拉列表,必须从数据库中获取下拉列表并在 jsp 中显示。我是第一次使用jsp。你能给我一个从数据库中获取下拉列表并在 jsp 下拉元素中显示值的想法吗?提前致谢

【问题讨论】:

    标签: mysql jsp


    【解决方案1】:

    如何从数据库中获取下拉值并在jsp中显示:

    从 Mysql 中动态获取数据到 Jsp 中的(下拉)选择选项。这篇文章说明了,从 mysql 数据库中获取数据并显示在 Jsp 中的选择选项元素中。在阅读这篇文章之前,您应该知道以下文章,即:

    如何将 Mysql 数据库连接到 jsp。

    如何在 MySql 中创建数据库并将数据插入数据库。 使用下面的数据库,来说明‘Dynamically Fetch data from Mysql to (drop down)

    选择 Jsp 中的选项:

    id  City
    1   London
    2   Bangalore
    3   Mumbai
    4   Paris
    

    以下代码用于在 MySql 数据库中插入数据。使用的数据库是“城市”,用户名=“root”,密码也设置为“root”。

    Create Database city;
    Use city;
    

    Create table new(id int(4), city varchar(30));
    

    insert into new values(1, 'LONDON');
    insert into new values(2, 'MUMBAI');
    insert into new values(3, 'PARIS');
    insert into new values(4, 'BANGLORE');
    

    这是从 Mysql 动态获取数据到 Jsp 中的(下拉)选择选项的代码:

    <%@ page import="java.sql.*" %>
    <%ResultSet resultset =null;%>
    
    <HTML>
    <HEAD>
        <TITLE>Select element drop down box</TITLE>
    </HEAD>
    
    <BODY BGCOLOR=##f89ggh>
    
    <%
        try{
    //Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection connection = 
             DriverManager.getConnection
                ("jdbc:mysql://localhost/city?user=root&password=root");
    
           Statement statement = connection.createStatement() ;
    
           resultset =statement.executeQuery("select * from new") ;
    %>
    
    <center>
        <h1> Drop down box or select element</h1>
            <select>
            <%  while(resultset.next()){ %>
                <option><%= resultset.getString(2)%></option>
            <% } %>
            </select>
    </center>
    
    <%
    //**Should I input the codes here?**
            }
            catch(Exception e)
            {
                 out.println("wrong entry"+e);
            }
    %>
    
    </BODY>
    </HTML>
    

    【讨论】:

    • 好的,但我有一个这样的jsp,它是一个国家下拉列表和州下拉列表
    • @user2585622,嘿,这只是示例代码...您应该自己更改代码...这很简单,您只需复制并粘贴此代码并添加国家/地区...
    • 好的,但我有一个像这样的 jsp,它是一个国家下拉列表和状态下拉列表,并且还与 dao 中的 db 建立了连接,并在 DAO 中获得了下拉值。我的问题是如何调用该 DAO从jsp并显示下拉列表
    • 你只提到jsp,只有我会发布jsp页面......如果你想要dao和servelt,你应该添加servlet标签,你应该提到servlet dao
    • 确定第一次使用如何获取下拉列表。在 dao 中有列表。如何在jsp中检索
    【解决方案2】:

    可以学习一些JSP页面直接访问数据库(mysql)的教程here

    注意事项:

    • 在jsp页面中导入sql标签库

      &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%&gt;

    • 然后在页面上设置数据源

      <sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://<yourhost>/<yourdb>" user="<user>" password="<password>"/>
      
    • 现在在页面上查询您想要的内容

      <sql:query dataSource="${ds}" var="result"> //ref  defined 'ds'
          SELECT * from <your-table>;
      </sql:query>
      
    • 最后,您可以使用c:forEach 标记在页面上填充下拉列表,以迭代select 元素中的结果行

      <c:forEach var="row" items="${result.rows}"> //ref set var 'result' <option value='<c:out value="${row.key}"/>'><c:out value="${row.value}"/</option> </c:forEach>

    【讨论】:

    • 谢谢,但我已经从 db 获得了 DAO 中的下拉列表。你能告诉我如何从jsp调用dao并显示下拉列表
    • 你应该问下你想要的细节问题。您的问题意味着您希望将 JSP 页面访问到数据库。你能用更多细节编辑你的问题吗?是使用 Spring 还是 EJB、JPA 等?
    • 确定我有一个 jsp,并且我已经从 javascript 到 DAO 进行了 ajax 调用,我在其中检索了下拉列表的详细信息。现在我如何在jsp中显示它意味着如何调用javascript函数来显示下拉列表
    • 请使用 DAO 和 javascript ajax 使用的更多详细信息编辑您的问题。所以帮助很快就会到来。你能用'console.log'调试ajax响应吗?
    • 我通过 ajax 调用从数据库中检索了详细信息。我的问题是如何在 jsp 下拉列表中显示它。我使用了 javascript 并制作了一个 ajax 从数据库中获取值。
    【解决方案3】:

    我在我的代码中做了这个来做到这一点

    注意: 我是初学者。

    这是我的jsp代码。

    <%
    java.sql.Connection Conn = DBconnector.SetDBConnection(); /* make connector as you make in your code */
    Statement st = null;
    ResultSet rs = null;
    st = Conn.createStatement();
    rs = st.executeQuery("select * from department"); %>
    <tr> 
        <td> 
            Student Major  : <select name ="Major">
            <%while(rs.next()){ %>
            <option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
                            <%}%>           
                             </select> 
       </td> 
    

    【讨论】:

      【解决方案4】:
      1. 建立数据库连接并检索查询结果。
      2. 遍历结果并显示查询结果。

      下面的示例代码详细说明了这一点。

      <%@page import="java.sql.*, java.io.*,listresult"%> //import the required library
      
      <%
      
      String label = request.getParameter("label"); // retrieving a variable from a previous page
      
      Connection dbc = null; //Make connection to the database
      Class.forName("com.mysql.jdbc.Driver");
      dbc = DriverManager.getConnection("jdbc:mysql://localhost:3306/works", "root", "root");
      if (dbc != null) 
      {
          System.out.println("Connection successful");
      }
      
      ResultSet rs = listresult.dbresult.func(dbc, label); //This function is in the end. The function is defined in another package- listresult
      
      %>
      
      <form name="demo form" method="post">
      
          <table>
              <tr>
                  <td>
                      Label Name:
                  </td>
      
                  <td>
                      <input type="text" name="label" value="<%=rs.getString("labelname")%>">
                  </td>
      
                  <td>
                      <select name="label">
                      <option value="">SELECT</option>
      
                      <% while (rs.next()) {%>
      
                          <option value="<%=rs.getString("lname")%>"><%=rs.getString("lname")%>
                          </option>
      
                      <%}%>
                      </select>
                  </td>
              </tr>
          </table>
      
      </form>
      
      //The function:
      
      public static ResultSet func(Connection dbc, String x)
      {
          ResultSet rs = null;
          String sql;
          PreparedStatement pst;
          try
          {
              sql = "select lname from demo where label like '" + x + "'";
              pst = dbc.prepareStatement(sql);
              rs = pst.executeQuery();
          } 
          catch (Exception e) 
          {
              e.printStackTrace();
              String sqlMessage = e.getMessage();
          }
          return rs;
      }
      

      我试图使这个例子尽可能详细。如果您有任何疑问,请询问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多