有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JSP和mysql数据库缩小下拉搜索范围

<% 
ResultSet rsta=st.executeQuery("SELECT DISTINCT user_type FROM details where user_type not like 'null'");
while(rsta.next()) {
    out.write("<option value=" + rsta.getString("user_type") + ">" + rsta.getString("user_type") + "</option>");
}
%>
</select>
<label>Sct</label><select name="sct" id="subject" >
  <option selected="true" style="display:none;">Select Sct</option>
 <%  
  ResultSet rsta1=st.executeQuery("SELECT DISTINCT sct,user_type FROM details where sct not like 'null'"); 
  while(rsta1.next()) {
      out.write("<option value=" + rsta1.getString("sct") + ">" + rsta1.getString("sct") + "</option>");
  }
%> 
</select>
<label>Standard:</label><select name="standard" id="standard" >
<option selected="true" style="display:none;">Select Standard</option>
<% 
ResultSet rsta2=st.executeQuery("Select DISTINCT standard from details where standard not like 'null'");   
while(rsta2.next()) {
    out.write("<option value=" + rsta2.getString("standard") + ">" + rsta2.getString("standard") + "</option>");
}
%>
</select>
<label>Division:</label><select name="division"id="division" >
<option selected="true" style="display:none;">Select Division</option>
<%
ResultSet rsta3=st.executeQuery("Select DISTINCT division from details where division not like 'null'");   
while(rsta3.next()) {
    out.write("<option value=" + rsta3.getString("division") + ">" + rsta3.getString("division") + "</option>");
}
%>
</select>

这是4个选择字段。所有4个从mysql数据库获取列表。 但是所有选择都会根据所选列从数据库中获取所有可能的值

我会举一个例子 在进入数据库时,假设我为4列a、1、cat、milk添加 第二排由b、2、狗、骨头组成

现在在我上面的代码中,我将得到第一个选择(a,b),第二个选择(1,2),依此类推

我希望搜索范围缩小,如果我在第一个选项中选择a,则第二个选项中应仅显示1,第三个选项中应显示cat。我该怎么做呢。 我正在使用JSP


共 (2) 个答案

  1. # 1 楼答案

    更专业的方法是使用ajax调用填充下拉框,而不是重新加载整个表单。我推荐JQuery,而不是原始的ajax,它内置了ajax。注意:Ajax调用通常用于更改浏览器上的组件,避免重新填充整个表单。另一种方法是将所有下拉数据存储在多维javascript结构中,并使用OnClick事件在一个下拉框中获取所选项目,以填充下一个下拉框。这样,就不需要回调服务器(它都运行在客户端)

  2. # 2 楼答案

    我首先建议你从头到尾读一本关于JSP的书。我们通常不嵌入scriplets(<;%%>;)在JSP页面中。搜索亚马逊。com提供了一些关于JSP的入门书籍,这些书籍有很好的评论,并在过去一年左右的时间内出版。这本书很可能也会介绍servlet。你也可以阅读JSTL。阅读这本书可以节省你无数个小时在网上乱搞代码片段和提问。随着时间的推移,你应该阅读很多关于Java和相关技术的书籍

    话虽如此:
    JSP页面(表示层)负责显示数据和处理用户事件(鼠标点击等)。页面中不应有业务逻辑或数据库逻辑。在一个非常基本的设计中,您只有一个servlet,许多JSP页面都与之通信。当一个人在他的浏览器中输入一个url时,请求就会转到servlet。servlet调用业务逻辑,业务逻辑反过来调用数据库,以获取最初填充JSP页面所需的所有数据。servlet将数据放入请求范围(或会话范围),然后发送到JSP页面。JSP页面从请求范围获取数据以填充自身

    回答您的问题:通过servlet在初始页面加载(SQL调用)时填充第一个下拉列表。其他下拉框将为空。当用户在第一个下拉列表中做出选择时,让页面提交到servlet。servlet将读取第一个选择的值,并查询数据库以填充第二列。然后它将发送到JSP页面,在第一个和第二个下拉列表中显示数据。当用户选择第二列中的项目时,会发生类似的操作

    最后:阅读数据库设计。您的数据库表应该正确地规范化。此外,在datbase列中不存储“null”字符串值。而是存储一个实际的空值