求用jsp+数据库写的二级联动菜单的代码

fendawu 2007-11-14 10:37:19
请大家帮帮忙,我是菜鸟,急用!我的邮箱:fendawu@163.com 谢谢!!!
...全文
355 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
guga720 2008-11-30
  • 打赏
  • 举报
回复
我现在的项目也要求这个功能
不过只能用JSP,不用XML和.JAVA类
哪位大侠能帮帮忙啊
liyingfei 2007-11-16
  • 打赏
  • 举报
回复
这个是书里面的例子,楼主照着改改就行了
我原来发帖子问,别人的没调试好

照着书 改改就ok了 祝你好运


源文件:dyList.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<head>

<META http-equiv=Content-Type content="text/html; charset=UTF-8">

</head>

<script language="javascript">

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) { // 信息已经成功返回,开始处理信息

updateList();

} else { //页面不正常

window.alert("您所请求的页面有异常。");

}

}

}

// 刷新列表框函数

function refreshList() {

var sort = document.getElementById("sort").value;

if(sort == "" ) {

clearList();

return;

}

var url = "dyList?sort=" + sort;

sendRequest(url)

}

// 更新列表框中列表项函数

function updateList() {

clearList();

var product = document.getElementById("product");

var results = XMLHttpReq.responseXML.getElementsByTagName("name");

var option = null;



for(var i = 0; i < results.length; i++) {

option = document.createElement("option");

option.appendChild(document.createTextNode(results[i].firstChild. nodeValue));

product.appendChild(option);

}

}

// 清除列表框中原有选项的函数

function clearList() {

var product = document.getElementById("product");

while(product.childNodes.length > 0) {

product.removeChild(product.childNodes[0]);

}

}



</script>



<table style="BORDER-COLLAPSE: collapse" borderColor=#111111

cellSpacing=0 cellPadding=2 width=200 bgColor=#f5efe7 border=0>

<TR>

<TD align=middle height=4 colspan="2"><IMG height=4

src="images/promo_list_top.gif" width="100%"

border=0>

</TD>

</TR>

<TR>

<TD align=middle bgColor=#dbc2b0

height=19 colspan="2"><B>商品搜索</B>

</TD>

</TR>

<tr>

<td height="20">

品牌选择:

</td>

<td height="20">

<select id="sort" onchange="refreshList();">

<option value="default">请选择</option>

<option value="IBM">IBM</option>

<option value="SONY">SONY</option>

<option value="联想">联想</option>

</select>

</td>



</tr>

<tr>

<td height="20">

商品信息:

</td>

<td height="20">

<select id="product" >

</select>

</td>

</tr>



</table>

在该页面中,第一个列表框中提供了对应的品牌选项以供用户进行选择,当用户选择了所需的品牌信息后,将调用“refreshList()”函数,在该函数中首先获取到所选列表项的标志信息,如果用户选择的是“请选择”,则调用“clearList()”函数清除第二个列表框中的内容,如果用户选择的是有效的品牌选项,则借助Ajax提交请求,并同时提交用户所选选项的标识信息到服务器端,等待服务器端的处理。当服务器端后续处理完成后,将返回第二个列表框中的信息,然后在Ajax提供的处理函数中在对应的列表框中显示,在显示时使用了本书第3章中介绍的使用DOM操作HTML的方式。

该Web应用的配置文件web.xml对应的代码如下所示。从该配置文件中可以了解到,当浏览器端提交“dyList”请求时,将由服务器端的类名为“classmate.DyListAction”的Servlet程序进行处理。

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">



<servlet>

<servlet-name>ms1</servlet-name>

<servlet-class>classmate.DyListAction</servlet-class>

</servlet>



<servlet-mapping>

<servlet-name>ms1</servlet-name>

<url-pattern>/dyList</url-pattern>

</servlet-mapping>





<!-- The Welcome File List -->

<welcome-file-list>

<welcome-file>dyList.jsp</welcome-file>

</welcome-file-list>

</web-app>

下面我们关注一下服务器端Servlet程序DyListAction.java中对应的程序代码。当接收到浏览器端提交的请求后,Servlet程序首先获取浏览器端提交的所选列表项的标志信息,即所选择的商品类别信息,然后借助封装了数据库操作的JavaBean完成数据库的查询工作,依据类别获取到对应的商品名称信息。

package classmate;



import java.io.IOException;

……



public class DyListAction extends HttpServlet {



public void init(ServletConfig config) throws ServletException {

}



/*

* 处理<GET> 请求方法

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置接收信息的字符集

request.setCharacterEncoding("UTF-8");

//接收浏览器端提交的信息

String sort = request.getParameter("sort");

//设置输出信息的格式及字符集

response.setContentType("text/xml; charset=UTF-8");

response.setHeader("Cache-Control", "no-cache");

//创建输出流对象

PrintWriter out = response.getWriter();

//依据验证结果输出不同的数据信息

out.println("<response>");



//数据库操作

DB db = new DB();

ResultSet rs;

String strSql=null;

//查找该品牌具体型号

strSql ="select product.name,product.id from sort,product where sort.id=
product.sortid and sort.name='"+ sort + "'";

rs = db.executeQuery(strSql);

try {

while (rs.next()) {

out.println("<name>" + rs.getString("name") + "</name>");

}

} catch (SQLException e) {

e.printStackTrace();

}



out.println("</response>");

out.close();

}

}

注意在本例中,返回的XML文档的格式如下所示:

<response>

<name>商品名称1</ name>

<name>商品名称2</name>

</response>


liyingfei 2007-11-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071101/19/d2621a39-1d8a-4cee-8b19-0f577159fb26.html

这里有 我刚搞定
jiqimiao 2007-11-14
  • 打赏
  • 举报
回复
数据库链接,sql语句改改就可以用了,希望楼下的有“拿来就能用的”
fendawu 2007-11-14
  • 打赏
  • 举报
回复
这个没有数据库的结构啊,我看不大懂,有拿来就能用的源码吗?谢谢!
jiqimiao 2007-11-14
  • 打赏
  • 举报
回复
fendawu 2007-11-14
  • 打赏
  • 举报
回复
最好有源码,我是菜鸟,谢谢了!
HelloWorld_001 2007-11-14
  • 打赏
  • 举报
回复
手边没有,当时我是baidu找到的。
要求数据量不大,1次可以把全部纪录读如内存。
思路:用3唯数组存你的字段,上级ID,下级ID,需要显示的汉字
上级下拉里面就是正常的下拉,下级里面是个空的下拉。
上级下拉里面有个方法去你的数组里面查找上级ID相同的那些纪录,把那些填充进下级下拉里面。

描述的不好,baidu有完整的例子。我以前也在csdn别人问的时候发过。
fendawu 2007-11-14
  • 打赏
  • 举报
回复
那位大哥、大姐帮帮忙啊,在线等待。。。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧