我的代码:<%@ page language="java" import="java.util.*" pageEncoding="GBk"%>
<%@ page import="java.sql.*" %><%! 
String str = null;
private void tree(Connection conn,int id,int level){
Statement stmt= null;
ResultSet rs = null;
String preStr = "";
for(int i=0; i<level;i++){
preStr += "----";
}

try{
stmt = conn.createStatement();
String sql = "select * from article where pid = "+id;
rs = stmt.executeQuery(sql);
while(rs.next()){
str += "<tr><td>" + rs.getInt("id")+"</td><td>"+
preStr +"<a  href='ShowArticleDetail.jsp?id="+rs.getInt("id")+"'>" + 
rs.getString("title") +"</a>"+ "</td></tr>";
 if(rs.getInt("isleaf")!= 0){
  tree(conn, rs.getInt("id"),level+1);
 }

}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(rs !=null){
rs.close();
rs = null;
 }
 if(stmt != null){
  stmt.close();
  stmt = null;
 }
 if(conn != null){
  conn.close();
  conn = null;
 }
}catch(SQLException e){
e.printStackTrace();
}
}
}
 %><%
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/bbs?user=root&password=admin";
Connection conn = DriverManager.getConnection(url);Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from article where pid = 0");
try{
while(rs.next()){
str += "<tr><th style=color:#5D10F0;>"+"发贴人"+"</th></tr>"+"<tr><td>"+rs.getInt("id")+"</td><td>"+
 "<a  href='ShowArticleDetail.jsp?id="+rs.getInt("id")+"'>" + 
rs.getString("title") +"</a>"+ "</td></tr>";
 if(rs.getInt("isleaf")!= 0){
  tree(conn, rs.getInt("id"),1);
 }

}catch(SQLException e){
e.printStackTrace();
}
rs.close();
stmt.close();
conn.close();
 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    <title>My database xbbs</title>
  </head>
  <body>
<table border="1"  >
<%= str %>
<% str=""; %>
</table>
  </body></html>
报的错是:java.sql.SQLException: Operation not allowed after ResultSet closed