下载的ASP版本使用正常,但是需要使用在jsp里面,所以小改一下,改后代码如下:<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" import="java.io.*" errorPage="" %><%
String spath = "./db/tree.mdb";
String dbpath = application.getRealPath(spath);
String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "select id, parentid, treetext, hint, icon, data, url, target, method from treeview order by id asc";
ResultSet rs = stmt.executeQuery(sql);
%><html>
<head>
<title>MzTreeView10</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script language="JavaScript" src="script/MzTreeView10.js"></script>
<link href="css/tree.css" type="text/css" rel="stylesheet">
<style>
A.MzTreeview
{
font-size: 9pt;
padding-left: 3px;
}
</style>
</head>
<body class=frame >
<br><br><br> <SCRIPT LANGUAGE="JavaScript"> window.tree = new MzTreeView("tree"); tree.icons["property"] = "property.gif";
tree.icons["css"] = "collection.gif";
tree.icons["book"] = "book.gif";
tree.iconsExpand["book"] = "bookopen.gif"; //展开时对应的图片
tree.setIconPath("images/"); //可用相对路径,留空为当前路径
<%
String node="";
//String reg : set reg = new RegExp : reg.global=True : reg.pattern=";"
String id, parentid, treetext, hint, icon, data, treeurl, target, method;
while (rs.next()){
id=rs.getString("id");
parentid=rs.getString("parentid");
treetext=rs.getString("treetext");
hint=rs.getString("hint");
icon=rs.getString("icon");
data=rs.getString("data");
treeurl=rs.getString("url");
target=rs.getString("target");
method=rs.getString("method");
node = "tree.nodes[\""+parentid+"_"+id+"\"] = \"";
node += "text:"+ treetext.trim() +";";
if(!hint.trim().equalsIgnoreCase("")) node +="hint:"+hint.trim() +";";
if(!icon.trim().equalsIgnoreCase("")) node +="icon:"+icon.trim() +";";
if(!data.trim().equalsIgnoreCase("")) node +="data:"+data.trim() +";";
if(!treeurl.trim().equalsIgnoreCase("")) node +="url:"+treeurl.trim() +";";
if(!target.trim().equalsIgnoreCase("")) node +="target:"+target.trim() +";";
if(!method.trim().equalsIgnoreCase("")) node +="method:"+method.trim() +";";
node +="\"" ;
out.println(node); }
%>
tree.setTarget("right");
document.write(tree.toString()); //亦可用 obj.innerHTML = tree.toString();
//-->
</SCRIPT>
</body>
</html>
以上代码运行正常,可以正常读取附带ACCESS库里的菜单,可是怪异在,当我在数据库里新增记录,或者修改记录的时候,页面代码就无法显示,提示错误如下面:
String spath = "./db/tree.mdb";
String dbpath = application.getRealPath(spath);
String url ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "select id, parentid, treetext, hint, icon, data, url, target, method from treeview order by id asc";
ResultSet rs = stmt.executeQuery(sql);
%><html>
<head>
<title>MzTreeView10</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script language="JavaScript" src="script/MzTreeView10.js"></script>
<link href="css/tree.css" type="text/css" rel="stylesheet">
<style>
A.MzTreeview
{
font-size: 9pt;
padding-left: 3px;
}
</style>
</head>
<body class=frame >
<br><br><br> <SCRIPT LANGUAGE="JavaScript"> window.tree = new MzTreeView("tree"); tree.icons["property"] = "property.gif";
tree.icons["css"] = "collection.gif";
tree.icons["book"] = "book.gif";
tree.iconsExpand["book"] = "bookopen.gif"; //展开时对应的图片
tree.setIconPath("images/"); //可用相对路径,留空为当前路径
<%
String node="";
//String reg : set reg = new RegExp : reg.global=True : reg.pattern=";"
String id, parentid, treetext, hint, icon, data, treeurl, target, method;
while (rs.next()){
id=rs.getString("id");
parentid=rs.getString("parentid");
treetext=rs.getString("treetext");
hint=rs.getString("hint");
icon=rs.getString("icon");
data=rs.getString("data");
treeurl=rs.getString("url");
target=rs.getString("target");
method=rs.getString("method");
node = "tree.nodes[\""+parentid+"_"+id+"\"] = \"";
node += "text:"+ treetext.trim() +";";
if(!hint.trim().equalsIgnoreCase("")) node +="hint:"+hint.trim() +";";
if(!icon.trim().equalsIgnoreCase("")) node +="icon:"+icon.trim() +";";
if(!data.trim().equalsIgnoreCase("")) node +="data:"+data.trim() +";";
if(!treeurl.trim().equalsIgnoreCase("")) node +="url:"+treeurl.trim() +";";
if(!target.trim().equalsIgnoreCase("")) node +="target:"+target.trim() +";";
if(!method.trim().equalsIgnoreCase("")) node +="method:"+method.trim() +";";
node +="\"" ;
out.println(node); }
%>
tree.setTarget("right");
document.write(tree.toString()); //亦可用 obj.innerHTML = tree.toString();
//-->
</SCRIPT>
</body>
</html>
以上代码运行正常,可以正常读取附带ACCESS库里的菜单,可是怪异在,当我在数据库里新增记录,或者修改记录的时候,页面代码就无法显示,提示错误如下面:
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.tree2_jsp._jspService(tree2_jsp.java:121)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.