【问题标题】:Adding values dynamically to a drop down from mysql database using jsp使用jsp将值动态添加到mysql数据库的下拉列表中
【发布时间】:2016-06-17 07:15:09
【问题描述】:

我需要帮助将值从 mysql 数据库动态添加到下拉列表中。

工作流程:

在我的jsp页面中,

1.Country name 是 servlet 的 session 属性

2.Sate 是一个自动完成的文本框

3.District 是一个下拉菜单。

根据国家名称,州文本框将通过自动填充填充,地区名称是一个下拉列表,地区名称应动态添加到下拉列表中

问题:

我需要根据位置和州将地区名称的值添加到我的下拉列表中。

我的数据库查询是"Select district from locationlist where country='"+country+"'and state='"+state+"'";

在“where”条件下,国家和州的值应该从我的 jsp 页面传递。

根据我的要求,请帮助我将值添加到我的 jsp 页面 (Location.jsp) 中的下拉菜单中。

这是我的代码

Location.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Location</title>
        <link rel="stylesheet" type="text/css" href="CSS/style1.css" />

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script type="text/javascript" src="JS/jquery-1.4.2.min.js"></script>
<script src="JS/jquery.autocomplete.js"></script>
<script>
     jQuery(function(){
            $("#state").autocomplete("Statelist.jsp");
      });
</script>  
<script type="text/javascript">        
        function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var colCount = table.rows[0].cells.length;

            for(var i=0; i<colCount; i++) {

                var newcell = row.insertCell(i);

                newcell.innerHTML = table.rows[1].cells[i].innerHTML;
                //alert(newcell.childNodes);
                switch(newcell.childNodes[0].type) {
                    case "text":
                            newcell.childNodes[0].value = "";

                            jQuery(function(){
            $('input[name="state"]').autocomplete("Statelist.jsp");
                         });
                         break;

                    case "select-one":
                            newcell.childNodes[0].selectedIndex = 0;
                            break;
                }

            }

        }

        function deleteRow(tableID) {

            try {

            var table = document.getElementById(tableID);

       var rowDelete = table.rows.length - 1;

       if (rowDelete > 1)

           table.deleteRow(rowDelete);

       else

         alert("Cannot delete all the rows.")


            }
            catch(e) {
                alert(e);
            }
        }
    </script>


</head>

<body>

<h1><font face="Times New Roman" align="center">Form</font></h1><br/><br/>
<h5><font color="blue"> Country: <% String country=(String)session.getAttribute("country");
       out.print(country); %>  
       <c:set var="country" value="country" scope="session"  /></font> </h5>
<br/>
<div>
<center>
    <form>

      <input type="button" id="button" value="Add Row" onclick="addRow('dataTable')"  />

    <input type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
    <input type="button" value="Save"/>
    <br/>
    <br/>

     <table id="dataTable" align="center" width="350px" border="1">

   <tr>
        <th>State</th>
        <th>District</th>

    </tr>

    <tr>

   <td> <input type="text" class="auto" id="state" name="state"/></td> &nbsp;
    <td><select name="district"/>
    <option value="select">SELECT</option>
  </select>
    </td>
    </tr>
  </table>
</form>
</center>
</div>
</body>
</html>

【问题讨论】:

    标签: jquery jsp servlets drop-down-menu


    【解决方案1】:

    试试这个.....把代码sn-p放到while循环中

    <td><select name="district"/>
        <% while(rs.next()==true)
       {      
       %>
    <option value=<%rs.getString("name");%>> <% rs.getString("name");%> </option>
    <% } %>
    

    【讨论】:

    • 在我的代码中,country 是一个会话属性,state 是一个自动完成文本框。这两个是我将在“where”条件下使用的输入。我需要在其中进行数据库操作吗servlet 代码或在同一个 JSP (Location.jsp) 页面中将值添加到我的下拉列表中?
    • 我很困惑!我需要在哪里有我的 JDBC 部分,在同一个 jsp 页面中,还是我需要创建一个 servlet 来处理数据库?
    【解决方案2】:

    我想你想在你的 JSP 页面中显示一个列表

    试试这个想法(你必须知道在你的 JSP 中使用 scriplets 是不受欢迎的)

    你说:我有一个 servlet 来传递 Country name 是一个 session 属性 您可以使用相同的 servlet 执行相同的操作来将 List 传递给您的 JSP:

    1/ 创建一个新的可序列化的 java 类,在其中放置 'district' 属性

    public class MYBEAN  implements Serializable {
    
        private String district;
    
    
    //ADD GETTER AN SETTER METHODS 
    
    public MYBEAN() {
    
    
    
        }
    
    public MYBEAN(String disctrict) {
    
            this.disctrict = disctrict;
    
        }
    
    
    public List<MYBEAN> loadData(String state,String country)
        {
            List<MYBEAN> actorList = new ArrayList<BookData>();
    
            com.mysql.jdbc.PreparedStatement ps = null;  
    
    
    
    
                ResultSet rs = null;  
    
                 String url="jdbc:mysql://127.0.0.1:3306/DATABASENAME";//CHANGE
                String name="NAME";//CHANGE
                String pw="PWD";//CHANGE
                String driver="com.mysql.jdbc.Driver";    
    
    
                Connection connexion=null;
    
    
    try
    {    
        Class.forName(driver).newInstance();
        connexion=DriverManager.getConnection(url,name,pw);        
    
    
        String q ="Select district from locationlist where country='"+country+"'and state='"+state+"'";
               Statement commande=connexion.createStatement();
                  rs=commande.executeQuery(q);                 
                   while (rs.next())
                    {
    
    MYBEAN bk = new MYBEAN(rs.getString("district"));/*CHANGE COLUMN NAMES*/
    
                    actorList.add(bk);
    
                    }
    
    
                    return actorList;
    
    
                    }catch(Exception e)
                    {
                    e.printStackTrace();
    
                    return null;
    
                    }
                    finally
                    {
                    try
                    {
                    rs.close();
                    connexion.close();
    
                    }
                    catch(Exception e)
                    {
                    e.printStackTrace();
                    }
                    }
    
        }
    
    }
    

    2/ 你的servlet

    public class EXAMPLE_SERVLET extends HttpServlet {
    
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
          String option= request.getParameter("country");
          String state= request.getParameter("state");
    
            MYBEAN dao = new MYBEAN();
            List<MYBEAN> list = dao.loadData( state, country);
    
            request.setAttribute("MYlist", list);
    
            RequestDispatcher view = request.getRequestDispatcher("MY.jsp");
            view.forward(request, response); 
    
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
    
    
        }
    
    
    
    }
    

    3/ 在你的 JSP 中添加这个代码

    <select name="database">
      <c:forEach items="${MYlist}" var="databaseValue">
        <option value="${databaseValue}">
            ${databaseValue}
        </option>
      </c:forEach>
    </select>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2013-07-15
      • 1970-01-01
      • 2014-08-10
      • 2018-08-06
      • 2016-01-31
      • 2020-11-20
      相关资源
      最近更新 更多