当前位置: 首页 > 知识库问答 >
问题:

使用jsp将值动态添加到mysql数据库的下拉列表中

禄光霁
2023-03-14

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

工作流程:

在我的jsp页面中,

1.国家名称是servlet的会话属性

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

3.District是下拉列表。

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

问题:

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

我的数据库查询是“从位置列表中选择地区,其中国家=‘country’和国家=‘state’”

在“在哪里”条件下,国家和状态值应该从我的jsp页面传递。

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

这是我的密码

位置.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>

共有2个答案

龚星洲
2023-03-14

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

试试这个想法(你必须知道在JSP中使用脚本是不合适的)

你说:我有一个servlet要传递国家名称是一个会话属性,您可以做同样的事情,使用相同的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>
公羊浩气
2023-03-14

试试这个……把代码片段放到while循环中

<td><select name="district"/>
    <% while(rs.next()==true)
   {      
   %>
<option value=<%rs.getString("name");%>> <% rs.getString("name");%> </option>
<% } %>
 类似资料:
  • 我正在尝试填充一个下拉菜单。第二个和第三个下拉列表应显示根据先前选择的下拉值从数据库检索后的值。你能指出我代码中的错误吗。当我运行代码时,我无法在任何下拉列表中选择任何值。请帮帮我<乡村。jsp 状态jsp City.jsp几乎和state.jsp一样 我已经在数据库中添加了值。提前谢谢

  • 我正在尝试将用户在表单中输入的值插入数据库。 我有两个下拉列表用于血液测试,然后是分类。例如,用户首先选择下拉列表1“甲状腺”(类别),然后下拉列表2显示“FT4、FT3 TSH”(血液检测)等,用户进行选择。 然后他们输入日期和值。 在我的insert中,我需要在我的数据库中插入用户id(在使用会话变量登录后建立)、血液测试id(从下拉列表2)、日期和值。 我不能得到我的SQL查询正确的插入一般

  • 我在将下拉选项值(这是一个数字)拉入MySQL查询时遇到了一些问题。这里有一些代码供您使用: users.jsp 我得到的500个错误是: HTTP状态[500]-[内部服务器错误] 类型异常报告 说明服务器遇到意外情况,无法完成请求。 Exception org.apache.jasper.jasperException:在处理第[8]行的JSP页[/insert-user.JSP]时发生异常

  • 本文向大家介绍Ajax动态为下拉列表添加数据的实现方法,包括了Ajax动态为下拉列表添加数据的实现方法的使用技巧和注意事项,需要的朋友参考一下  1. 前台jsp,新建一个下拉控件 2. js部分,建一个function方法,利用ajax,指向 'getAllTypes.action' 的servlet部分,获取传来的下拉列表的数据,动态填充 3. 新建一个servlet页面,用来向Ajax返回数

  • 我正在对php页面进行调整,希望最终用户能够从下拉列表中选择“姓名和电子邮件”。数据将来自mySQL数据库。 我已经设法让它部分工作,但是必须有东西做一个"验证",因为当页面上的所有数据都被选中,最终用户试图提交页面时,最终用户会收到电子邮件地址是无效,而事实上它是100%有效的。 与此相关,我更改的部分是,最终用户过去必须手动键入他们的电子邮件地址,现在他们可以从下拉列表中选择,但现在它告诉我们

  • 问题内容: 我有一个包含html表单的网站,在此表单中,我有一个下拉列表,其中包含在该公司工作的代理的列表,我想从MySQL数据库中获取数据到该下拉列表,因此当您添加新代理时,他的名字将会出现作为下拉列表中的一个选项。 您能帮我编码这个php代码吗,谢谢 问题答案: 为此,您要遍历查询结果的每一行,并将此信息用于下拉菜单的每个选项。您应该能够轻松调整以下代码,以满足您的需求。