首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

jsp 纯链接数据库实现下拉框联动解决方案

2012-01-31 
jsp 纯链接数据库实现下拉框联动看了论坛里大多数都是select*fromtable然后再用javascirpt做数组实现的现

jsp 纯链接数据库实现下拉框联动
看了论坛里大多数都是select   *   from   table
然后再用javascirpt做数组实现的
现在我要操作的表数据非常大,几十W条

所有想充分利用强劲的服务器,只单纯的实现2个下拉框的2级联动问题
思路大致在单页面内,第1个下拉框的onchange后,提交数据库
可以刷新页面,这个无所谓,然后把相对应的值取到第2个下拉框里

貌似现在的问题是,onchange里的东西我不会写,还有如何提交等问题

麻烦各位大大了。。。。。
PS:暂时不考虑AJAX,只用jsp语句实现,可以配合JS

[解决办法]
这样的问题 无非就是两种方法 要不就把记录都取出来 放到数组变量 要不就是根据条件 时时地去查询 按照你的问题得知 第一种方法是不可取的
只有用第二种了
我的建议你还是用 Ajax 比较方便一点 Js 是能够实现 但是你想想 Sql 语句你怎么去拼装呢/ 在Js 里吗? 那样做不太好 , 数据库安全方面就出现漏洞了
其实 Ajax 并不是很难 应用到你这个问题上 那是非常容易的
Js 实现你的问题 有点麻烦
你自己多考虑一下
-------------------------------------------
你要是觉得 Ajax 你不想用
我的建议是 你让下拉框变化的时候去提交一个表单 但是目的页面还是本页,你用 JavaBean 去和数据库打交道 然后把返回的记录 放到 Request里 , 然后再在 Js里 根据 Request 来改变下拉框的内容
[解决办法]
<%@ page contentType= "text/html;charset=gb2312 "%>
<jsp:directive.page import= "duocai.Manger.DatabaseConnect "/>
<%@ page import= "java.sql.* " %>
<%@ page import= "java.util.* "%>
<%@ page import= "java.text.* "%>
<%@ page import= "java.io.* "%>
<jsp:useBean id= "popedom " scope= "page " class= "duocai.Manger.DatabaseConnect "> </jsp:useBean>
<html>
<body>
<%DatabaseConnect conn = new DatabaseConnect();
conn.Connect();
//省份选择1
String select_provinceCity = "select * from provinceCity ";
String select_province = "select * from province ";
ResultSet rst = conn.exQuery(select_provinceCity);
ResultSet rst1 = conn.exQuery(select_province);

//省份选择2
ResultSet rst2 = conn.exQuery(select_provinceCity);
ResultSet rst3 = conn.exQuery(select_province);

//专业选择
String select_specialityFirst = "select * from specialityFirst ";
String select_specialitySecond = "select * from specialitySecond ";
ResultSet rst4 = conn.exQuery(select_specialitySecond);
ResultSet rst5 = conn.exQuery(select_specialityFirst);

//省份选择3
ResultSet rst6 = conn.exQuery(select_provinceCity);
ResultSet rst7 = conn.exQuery(select_province);

%>

<script language= "JavaScript ">
<!--
var subcat = new Array();
var subcat1 = new Array();
var subcat2 = new Array();
var subcat3 = new Array();
<% int pck =0;%>
<% int pck1 =0;%>
<% int pck2 =0;%>
<% int pck3 =0;%>
<%while(rst.next()==true){
%>
subcat[ <%=pck%> ] = new Array( ' <%=rst.getString( "provinceCity ") %> ', ' <%=rst.getString( "city ") %> ')
<%pck++;
} %>
<%while(rst2.next()==true){
%>
subcat1[ <%=pck1%> ] = new Array( ' <%=rst2.getString( "provinceCity ") %> ', ' <%=rst2.getString( "city ") %> ')
<%pck1++;
} %>

<%while(rst4.next()==true){
%>
subcat2[ <%=pck2%> ] = new Array( ' <%=rst4.getString( "specialityFirst ") %> ', ' <%=rst4.getString( "specialitySecond ") %> ')
<%pck2++;
} %>

<%while(rst6.next()==true){
%>
subcat3[ <%=pck3%> ] = new Array( ' <%=rst6.getString( "provinceCity ") %> ', ' <%=rst6.getString( "city ") %> ')


<%pck3++;
} %>

function changeselect1(locationid)
{
document.Myform.s2.length = 0; //初始化下拉列表 清空下拉数据
document.Myform.s2.options[0] = new Option( '==请选择== ', ' '); //给第一个值
for (i=0; i <subcat.length; i++)
{
if (subcat[i][0] == locationid) //[0] [1] 第一列 第二列
{
document.Myform.s2.options[document.Myform.s2.length] = new Option(subcat[i][1], subcat[i][2]);
} //建立option
}
}

function changeselect2(locationid)
{
document.Myform.s4.length = 0; //初始化下拉列表 清空下拉数据
document.Myform.s4.options[0] = new Option( '==请选择== ', ' '); //给第一个值
for (i=0; i <subcat1.length; i++)
{
if (subcat1[i][0] == locationid) //[0] [1] 第一列 第二列
{
document.Myform.s4.options[document.Myform.s4.length] = new Option(subcat1[i][1], subcat1[i][2]);
} //建立option
}
}

function changeselect3(locationid)
{
document.Myform.s6.length = 0; //初始化下拉列表 清空下拉数据
document.Myform.s6.options[0] = new Option( '==请选择== ', ' '); //给第一个值
for (i=0; i <subcat2.length; i++)
{
if (subcat2[i][0] == locationid) //[0] [1] 第一列 第二列
{
document.Myform.s6.options[document.Myform.s6.length] = new Option(subcat2[i][1], subcat2[i][2]);
} //建立option
}
}

function changeselect4(locationid)
{
document.Myform.s8.length = 0; //初始化下拉列表 清空下拉数据
document.Myform.s8.options[0] = new Option( '==请选择== ', ' '); //给第一个值
for (i=0; i <subcat3.length; i++)
{
if (subcat3[i][0] == locationid) //[0] [1] 第一列 第二列
{
document.Myform.s8.options[document.Myform.s8.length] = new Option(subcat3[i][1], subcat3[i][2]);
} //建立option
}
}
//-->
</script>

<form name= "Myform ">
省份选择1:

<select name= "s1 " onChange= "changeselect1(this.value) ">
<option> ==请选择== </option>
<%while(rst1.next()==true){
%>
<option value= " <%=rst1.getString( "province ") %> "> <%=rst1.getString( "province ") %> </option>
<%} %>
</select>
<select name= "s2 " >
<option> ==请选择== </option>
</select>

<br> <br> <hr> <br>

省份选择2:

<select name= "s3 " onChange= "changeselect2(this.value) ">
<option> ==请选择== </option>
<%while(rst3.next()==true){
%>
<option value= " <%=rst3.getString( "province ") %> "> <%=rst3.getString( "province ") %> </option>
<%} %>
</select>
<select name= "s4 " >
<option> ==请选择== </option>
</select>

<br> <br> <hr> <br>

专业选择:

<select name= "s5 " onChange= "changeselect3(this.value) ">
<option> ==请选择== </option>
<%while(rst5.next()==true){


%>
<option value= " <%=rst5.getString( "speciality ") %> "> <%=rst5.getString( "speciality ") %> </option>
<%} %>
</select>
<select name= "s6 " >
<option> ==请选择== </option>
</select>

<br> <br> <hr> <br>

省份选择3:

<select name= "s7 " onChange= "changeselect4(this.value) ">
<option> ==请选择== </option>
<%while(rst7.next()==true){
%>
<option value= " <%=rst7.getString( "province ") %> "> <%=rst7.getString( "province ") %> </option>
<%} %>
</select>
<select name= "s8 " >
<option> ==请选择== </option>
</select>

<br> <br> <hr> <br>

</form>
<body>
</body>
</html>

[解决办法]
手里有个2级联动的.
代码也比较少.从数据库连的.
hmilyld@gmail.com
这会下班了,明天给你发个例子.

热点排行