四级联动,级联菜单,Ajax

按照别人的改编的

menu.jsp

************************************************************************************************************************************

<%@ page pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
%>
<%@ page import="com.lmy.dao.*"%>
<%@ page import="com.lmy.po.*"%>
<%@ page import="com.hp.hpl.jena.util.iterator.ExtendedIterator"%>
<% 
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
 <head>
  <META http-equiv=Content-Type content="text/html; charset=UTF-8">
  <!--LINK href="images/css.css" type=text/css rel=stylesheet-->
  <title>级联菜单</title>
 </head>
 <%
  SubjectDAO sd = new SubjectDAO();
  ExtendedIterator ei = sd.listAllInv();
 %>
 <body>
<script language="javascript">
 var XMLHttpReq;//这个例子里面只用到一个XMLHttpRequest对象,用于获取服务端返回的XML序列
  //创建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) {}
   }
  }
 }
 //发送area请求函数
 function sendRequestArea(url) {
  createXMLHttpRequest();
  XMLHttpReq.open("GET", url, true);
  XMLHttpReq.onreadystatechange = processResponseArea;//指定area响应函数
  XMLHttpReq.send(null);  // 发送请求
 }
 // 处理area返回信息函数
    function processResponseArea() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
    updateAreaList();
      } else { //页面不正常
         alert("您所请求的页面有异常。");
      }
        }
    }
 //更新area菜单函数
 function updateAreaList() {
     var area = XMLHttpReq.responseXML.getElementsByTagName("area");
     var list = document.all.areaList;
        for(var i=0;i<area.length;i++){
         list.add(new Option(area[i].firstChild.data,'a_'+area[i].firstChild.data));
        }
 }
 
 //发送unit请求函数
 function sendRequestUnit(url) {
  createXMLHttpRequest();
  XMLHttpReq.open("GET", url, true);
  XMLHttpReq.onreadystatechange = processResponseUnit;//指定unit响应函数
  XMLHttpReq.send(null);  // 发送请求
 }
 // 处理unit返回信息函数
    function processResponseUnit() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
    updateUnitList();
      } else { //页面不正常
         alert("您所请求的页面有异常。");
      }
        }
    }
 //更新unit菜单函数
 function updateUnitList() {
        var unit = XMLHttpReq.responseXML.getElementsByTagName("unit");
        var list = document.all.unitList;
        for(var i=0;i<unit.length;i++){
         list.add(new Option(unit[i].firstChild.data,'u_'+unit[i].firstChild.data));
        }
 }
 //发送topic请求函数
 function sendRequestTopic(url) {
  createXMLHttpRequest();
  XMLHttpReq.open("GET", url, true);
  XMLHttpReq.onreadystatechange = processResponseTopic;//指定topic响应函数
  XMLHttpReq.send(null);  // 发送请求
 }
 // 处理topic返回信息函数
    function processResponseTopic() {
     if (XMLHttpReq.readyState == 4) { // 判断对象状态
         if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
    updateTopicList();
      } else { //页面不正常
         alert("您所请求的页面有异常。");
      }
        }
    }
 //更新topic菜单函数
 function updateTopicList() {
        var topic = XMLHttpReq.responseXML.getElementsByTagName("topic");
        var list = document.all.topicList;
        for(var i=0;i<topic.length;i++){
         list.add(new Option(topic[i].firstChild.data,'t_'+topic[i].firstChild.data));
        }
 }
 
 // 创建area级联菜单函数
 function showAreaList(obj) {
  
  clearAreaList();
  clearUnitList();
  clearTopicList();
  sendRequestArea("<%=basePath%>TopicOntologyOperate/menujsp.jsp?subjectName=" + obj);
 }
 // 创建unit级联菜单函数
 function showUnitList(obj) {
  clearUnitList();
  clearTopicList();
  sendRequestUnit("<%=basePath%>TopicOntologyOperate/menujsp.jsp?areaName="+obj);
 }
 // 创建topic级联菜单函数
 function showTopicList(obj) {
  clearTopicList();
  sendRequestTopic("<%=basePath%>TopicOntologyOperate/menujsp.jsp?unitName="+obj);
 }
 
 // 清空area下拉列表
 function clearAreaList()
 {
  var list = document.all.areaList;
  list.options.length=0;
     list.add(new Option("---请选择---",""));
 }
 // 清空unit下拉列表
 function clearUnitList()
 {
  var list = document.all.unitList;
  list.options.length=0;
        list.add(new Option("---请选择---",""));
 }
 // 清空topic下拉列表
 function clearTopicList()
 {
  var list = document.all.topicList;
  list.options.length=0;
        list.add(new Option("---请选择---",""));
 }

</script>
  <select
   οnchange="showAreaList(this.options[this.options.selectedIndex].value)"
   name="subjectList" style="width: 150px">
   <option value=''>
    ---请选择---
   </option>
   <%
   while (ei.hasNext()) {
    String temp = ei.next().toString();
    String res1 = temp.split("#")[1];
   %>
    <option value="<%=res1%>"><%=temp.split("_")[1]%></option>
   <%
   }
   %>
  </select>
  <select name="areaList"
   οnchange="showUnitList(this.options[this.options.selectedIndex].value)"
   style="width: 150px">
   <option name="">
    ---请选择---
   </option>
  </select>
  <select name="unitList"
   οnchange="showTopicList(this.options[this.options.selectedIndex].value)"
   style="width: 150px">
   <option name="">
    ---请选择---
   </option>
  </select>
  <select name="topicList"
   οnchange="if(this.selectedIndex)alert(this.options[this.options.selectedIndex].value)"
   style="width: 150px">
   <option name="">
    ---请选择---
   </option>
  </select>
 </body>
</html>

************************************************************************************************************************************

menujsp.jsp

************************************************************************************************************************************

<%@ page pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%request.setCharacterEncoding("gb2312");%>

<%@ page import="java.util.*" %>
<%@ page import="com.lmy.ontology.*" %>
<%@ page import="com.hp.hpl.jena.rdf.model.*"%>
<%
 String subjectName;
 String areaName;
 String unitName;
 String item = "isAPartOf";
 TopicOntologyDAO tod = new TopicOntologyDAO();
 ResIterator resultA = null;    //知识领域结果集
 ResIterator resultU = null;    //知识单元结果集
 ResIterator resultT = null;    //知识点结果集
 //如果传过来的参数是 学科名称 ,则找到此学科下的所有领域
    if(request.getParameter("subjectName") != null){
  subjectName = new String(request.getParameter("subjectName").getBytes("ISO-8859-1"),"GB2312");
  resultA = tod.search(item, subjectName);
 }
 //如果传过来的参数是 知识领域名称 ,则找到此领域下的所有单元
 if(request.getParameter("areaName") != null){ 
     areaName = new String(request.getParameter("areaName").getBytes("ISO-8859-1"),"GB2312");
     resultU = tod.search(item, areaName);
 }
 //如果传过来的参数是 知识单元名称 ,则找到此单元下的所有知识点
 if(request.getParameter("unitName") != null){ 
     unitName = new String(request.getParameter("unitName").getBytes("ISO-8859-1"),"GB2312");
     resultT = tod.search(item, unitName);
 }
 
    
 response.setContentType("text/xml; charset=UTF-8");
 response.setHeader("Cache-Control", "no-cache");
 out.println("<response>");
 if(resultA != null){
  while (resultA.hasNext()) {
   Resource res = resultA.nextResource();
   String areaTitle = tod.getValue(res,"areaTitle");
   out.println("<area>" + areaTitle + "</area>");
  }
 }
 if(resultU != null){
  while (resultU.hasNext()) {
   Resource res1 = resultU.nextResource();
   String unitTitle = tod.getValue(res1,"unitTitle");
   out.println("<unit>" + unitTitle + "</unit>");
  }
 } 
 if(resultT != null){
  while (resultT.hasNext()) {
   Resource res2 = resultT.nextResource();
   String topicName = res2.toString().split("#")[1];
   String topicTitle = tod.getValue(res2,"title");
   out.println("<topic>" + topicTitle + "</topic>");
  }
 } 
 out.println("</response>");
 //out.close();
%>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值