错误如下:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 8 in the jsp file: /query.jsp
Generated servlet error:
E:\server\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\query_jsp.java:110: cannot resolve symbol
symbol  : variable nodes 
location: class org.apache.jsp.query_jsp
Iterator nodeIt=nodes.iterator();
                ^
1 error org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
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.代码如下:<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.io.RandomAccessFile"%>
<%@ page import="java.io.File"%>
<%@ page import="java.util.*"%>
<%@ page import="com.mysql.jdbc.Driver" %>
<%@ page import="java.sql.*" %><%
//驱动程序名
String driverName="com.mysql.jdbc.Driver";
//数据库用户名
String userName="root";
//密码
String userPasswd="2421543";
//数据库名
String dbName="myweb";
//联结字符串
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();
//表名
String tableName="treemenu";
//我的个性化菜单用户ID
String userid=(String)session.getAttribute("userid");
int userid_int = Integer.parseInt(userid);String sql;
int gg=0;if(userid_int > 0)
sql="SELECT * FROM "+tableName +" where userid= "+ gg +" or userid =" +userid_int;//增加个性化菜单
else
sql="SELECT * FROM "+tableName +" where userid= "+ gg ;//只显示公共菜单if(statement!=null)
{
ResultSet rs = statement.executeQuery(sql);
ArrayList nodes =new ArrayList();
while(rs.next())
{
HashMap node = new HashMap();

node.put("id",rs.getString(1));
node.put("pid",rs.getString(3));
node.put("name",rs.getString(2));
node.put("url",rs.getString(4));
node.put("url_target",rs.getString(5));
nodes.add(node);
}
rs.close();
}
else
{
out.print("连接数据库出错了!");
}
statement.close();
connection.close();String peid=request.getParameter("peid");
String pid=request.getParameter("pid");ArrayList subNodes=new ArrayList();
Iterator nodeIt=nodes.iterator();while(nodeIt.hasNext())
{
HashMap tmnode=(HashMap)nodeIt.next();
if(tmnode.get("pid").equals(pid))
{
subNodes.add(tmnode);
}
}
%>function getSubNodes_<%=pid%>()
{
/*定义子节点数组*/

var subNodes=new Array();
<%
for(int i=0;i<subNodes.size();i++)
{
HashMap tmnode=(HashMap)subNodes.get(i);
%>
subNodes[<%=i%>]=new String("<%=tmnode.get("id")%>|<%=tmnode.get("pid")%>|<%=tmnode.get("name")%>|<%=tmnode.get("url")%>|<%=tmnode.get("url_target")%>");
<%
}
%>
return subNodes;
}
createNodes("<%=peid%>","<%=pid%>");以前是可以的,这是一个动态树的代码