salve ragazzi,

vorrei separare il codice java da quello html di una pagina jsp che esegue una select su una tabella chiamata persona. Il punto di partenza č questa pagina jsp:

codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Tabella Persona dell'utente Francesco - Risultato Query</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="index.css">
</head>

<body>
	<div id="container">
		
			
		<%@page import="java.sql.*"%> 
      <% 
          ...
        //Prelevo i dati dal form
          String select=new String(request.getParameter("select"));
		  String from=new String(request.getParameter("from"));
		  String where=new String(request.getParameter("where"));
		  String having=new String(request.getParameter("having"));
		  String testo=new String(request.getParameter("testo"));  
 
          //Esecuzione istruzione SQL 
          Statement st = connection.createStatement(); 
          String SQL= new String ("");//OCCORRE INIZIALIZZARE la stringa SQL
          if(testo.length()==0) 
          	 SQL = "SELECT "+select+" FROM "+from+" WHERE "+where+";";
          	 
          else
          	SQL = testo;
          	
           //out.println(SQL);
           //out.println(testo.length());
         
          ResultSet rs = st.executeQuery(SQL); 
          
          
          
 
          //Elaborazione risultati 
          
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnsNumber = rsmd.getColumnCount(); 
        String columnNames[];
        columnNames = new String[columnsNumber];
        for (int j = 0; j < columnsNumber; j++)
        {
        	columnNames[j] = rsmd.getColumnName(j + 1);
        }
         
        out.println("<table class=\"table\">");
        for (int k=0; k<columnNames.length; k++)
        {
        	out.println("<th>" + columnNames[k] + "</th>");	
        }
        //out.println("<th>Codice</th><th>Nome</th><th>Cognome</th><th>Etą</th><th>Cittą</th><th>Nazione</th>");  
        while(rs.next())
    		{
    			out.println("<tr>");
    			for(int i=1; i<=columnsNumber; i++)
		  			{
		  				
    					out.println("<td>" );
		  				out.println(rs.getString(i));
		  				out.println("</td>");
   						
     				} 
     			out.println("</tr>");
     			}
        out.println("</table>");      
    

      //chiude la connessione 
          connection.close(); 
      %> 
		
	</div>
</body>
</html>
Ecco come ho fatto io. Ho creato un file.java chiamato persona e il seguente metodo:

codice:
public ResultSet executeSelect(String SQL) throws ClassNotFoundException, SQLException 
		{
		    DBManager dbOracle = new DBManager("jdbc:odbc:OracleODBC", "francesco", "tiger");//creo un'istanza di DBManager
		  	dbOracle.startConnection();
		  	Statement st = dbOracle.connection.createStatement();
		  	
						try 
			{
							
				ResultSet rs = st.executeQuery(SQL);
				return rs;
					
			} 
			catch (SQLException e) 
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			ResultSet rs = st.executeQuery(SQL);
			
			dbOracle.closeConnection();
			return rs;
		}
la pagina jsp che richiama il metodo č:

codice:
<%@page import="java.util.*"%>
<%@page import="myUtil.DBManager"%>
<%@page import="mioPackage.persona"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Tabella Persona dell'utente Francesco - Risultato Query</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="index.css">
</head>

<body>
	<div id="container">
		
			
		

		<%
		//Prelevo i dati dal form
          String select=new String(request.getParameter("select"));
		  String from=new String(request.getParameter("from"));
		  String where=new String(request.getParameter("where"));
		  String having=new String(request.getParameter("having"));
		  String testo=new String(request.getParameter("testo")); 
		//ESEGUO SELECT
		persona p = new persona ();
		String SQL = new String("");
		if(testo.length()==0) 
          	 SQL = "SELECT "+select+" FROM "+from+" WHERE "+where+";";
        else
          	SQL = testo;
        
      ResultSet rs = p.executeSelect(SQL);
        		ResultSetMetaData rsmd = rs.getMetaData();
		        int columnsNumber = rsmd.getColumnCount(); 
		        String columnNames[];
		        columnNames = new String[columnsNumber];
		        for (int j = 0; j < columnsNumber; j++)
		        {
		        	columnNames[j] = rsmd.getColumnName(j + 1);
		        }
         
        out.println("<table class=\"table\">");
        for (int k=0; k<columnNames.length; k++)
        {
        	out.println("<th>" + columnNames[k] + "</th>");	
        }

purtroppo ottengo il seguente errore:

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 39 in the jsp file: /query.jsp
ResultSet cannot be resolved to a type
36: else
37: SQL = testo;
38:
39: ResultSet rs = p.executeSelect(SQL);
40: ResultSetMetaData rsmd = rs.getMetaData();
41: int columnsNumber = rsmd.getColumnCount();
42: String columnNames[];


An error occurred at line: 40 in the jsp file: /query.jsp
ResultSetMetaData cannot be resolved to a type
37: SQL = testo;
38:
39: ResultSet rs = p.executeSelect(SQL);
40: ResultSetMetaData rsmd = rs.getMetaData();
41: int columnsNumber = rsmd.getColumnCount();
42: String columnNames[];
43: columnNames = new String[columnsNumber];

Dove sbaglio??? Avete idee migliori?