下载的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库里的菜单,可是怪异在,当我在数据库里新增记录,或者修改记录的时候,页面代码就无法显示,提示错误如下面:

解决方案 »

  1.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    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.