java - 缩小 JSP 中的下拉搜索范围并使用 mysql db

标签 java mysql jsp

<% 
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,dog,bone 组成。

现在,在上面的代码中,我将进入第一个 select(a,b)、第二个 select(1,2) 等等。

我希望缩小搜索范围,如果我在第一个选择中选择 a,则第二个选择中只应出现 1,第三个中应出现 cat。我应该如何执行此操作。 我正在使用 JSP

最佳答案

我首先建议您从头到尾读一本有关 JSP 的书。我们通常不再在 JSP 页面中嵌入 scriplet (<%%>)。在 amazon.com 上搜索有关 JSP 的入门书籍,这些书籍有很好的评论并且是在去年左右出版的。这本书很可能也会涵盖 servlet。您还可以阅读 JSTL。阅读这本书可以节省你无数的时间来处理在线代码片段和提出问题。随着时间的推移,您应该阅读许多有关 Java 和相关技术的书籍。

话虽这么说:
JSP页面(表示层)负责显示数据和处理用户事件(鼠标点击等)。页面中不应有业务逻辑或数据库逻辑。在一种非常基本的设计中,您有且只有一个 servlet,许多 JSP 页面都与之通信。当用户在浏览器中输入 URL 时,请求将发送至 servlet。 servlet 调用业务逻辑,而业务逻辑又调用数据库来获取最初填充 JSP 页面所需的所有数据。 Servlet 将数据放入请求范围(或 session 范围)中,然后分派(dispatch)到 JSP 页面。 JSP 页面从请求范围获取数据来填充自身。

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

最后:阅读数据库设计。您的数据库表应该正确规范化。此外,您不会在数据库列中存储“null”字符串值。您改为存储实际的 null。

关于java - 缩小 JSP 中的下拉搜索范围并使用 mysql db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702695/

相关文章:

java - 使用java生成图像条形码并作为url保存到mysql中

MySQL REGEXP 匹配/或字段结束

mysql - 在带有日期的子句之间使用 MySql

java - 一类中有多个 FlowLayout?

java - 你能强制java按值返回一个对象吗?

java - Java-将所有音频文件导入目录中并进行连接

java - 哪个配置文件告诉 Tomcat 安装 JRE 的位置?

java - 文件上传时转换为缩略图时出现异常

java - Struts - 从 JAR 文件加载结果模板(如 JSP)

java - 我如何优化解决这个数学序列的这个类