<%
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/