按照别人的改编的
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();
%>