我想做一个简单的ajax,jsp,xml三者结合的二级级联下拉框,就是把数据放到xml文件中
但我不知道如何读取xml中的数据,如何获取list,再按照选中的查找...
我已经做了ajax,jsp从数据库中读取数据。但不知如何修改!还有xml文件放哪儿呢?放到web-inf下吗?还是和jsp放在一起?
请大家帮忙,指点指点
谢谢
index.jsp
[code="java"]<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%
String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String userName = "用户名";
String password = "密码";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List listb = new ArrayList();
try{
Class.forName(dbDriver);
} catch(java.lang.ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url,userName,password);
st=conn.createStatement();
String sqlQuery="sql语句";
rs=st.executeQuery(sqlQuery);
while (rs.next())
{
listb.add(rs.getString(1));
}
rs.close();
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
var XMLHttpReq; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //发送请求函数 function sendRequest(url) { createXMLHttpRequest(); XMLHttpReq.open("GET", url, true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.send(null); // 发送请求 } // 处理返回信息函数 function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 updateMenu(); } else { //页面不正常 alert("您所请求的页面有异常。"); } } } //更新菜单函数 function updateMenu() { var res=XMLHttpReq.responseXML.getElementsByTagName("res") /**下面是用innerHTML输出控件内容的一般用法 * var subMenu = ""; * for(var i = 0; i < res.length; i++) { * subMenu = subMenu + " " + res[i].firstChild.data + ""; * } * currentSort.innerHTML = subMenu; **/ var list = document.all.list; list.options.length=0; list.add(new Option("---请选择---","")); for(var i=0;i<res.length;i++){ list.add(new Option(res[i].firstChild.data,res[i].firstChild.data)); } } // 创建级联菜单函数 function showSubMenu(obj) { sendRequest("menu.jsp?sort=" + obj ); /**下面这一句的作用是:每次选择后回到第一个选项**/ // document.all.mli.options[0].selected=true; }---------请选择----------
<%
for(int i=0;i {
out.println(""+listb.get(i)+"");
}
%>
---请选择---
[/code]
menu.jsp
[code="java"]
HTML code<%@ page contentType="text/html; charset=GB2312" import="java.util.*,java.sql.*" %>
<%
String sort=new String(request.getParameter("sort").getBytes("iso-8859-1"),"GB2312");
System.out.print("sort="+sort);
String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String userName = "用户名";
String password = "密码";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List lists = new ArrayList();
try{
Class.forName(dbDriver);
} catch(java.lang.ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url,userName,password);
st=conn.createStatement();
rs=st.executeQuery("sql语句");
while (rs.next())
{
lists.add(rs.getString(1));
}
rs.close();
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
response.setContentType("text/xml; charset=gb2312");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<?xml version=\"1.0\" encoding=\"gb2312\"?>");
out.println("<response>");
for(int i=0;i<lists.size();i++)
{
out.println("<res>" + lists.get(i).toString() + "</res>");
}
out.println("</response>");
%>
[/code]