Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146

    [JSP/JAVA] Come separare questo codice?

    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?

  2. #2

    Re: [JSP/JAVA] Come separare questo codice?

    Originariamente inviato da SQLover
    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?
    mancano gli import per resultset e resultsetmetadata
    http://www.anobii.com/isalreadyinuse

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    grazie mille ora funziona

    secondo te va bene cosi o posso migliorare spostando altro codice java nel file Persona.java?

    forse questa parte era meglio metterla nel file .java, vero?

    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);
    }

  4. #4
    Originariamente inviato da SQLover
    grazie mille ora funziona

    secondo te va bene cosi o posso migliorare spostando altro codice java nel file Persona.java?

    forse questa parte era meglio metterla nel file .java, vero?

    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);
    }
    puoi creare un metodo che ti restituisca l'array di stringe e poi nella jsp fai solo la chiamata alla funzione e il ciclo sull'array
    http://www.anobii.com/isalreadyinuse

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    mmm attualmente credo non sia alla mia portata

    hai qualche esempio a portata di mano o qualche sito dove ci sono esempi di metodi java?

  6. #6
    Originariamente inviato da SQLover
    mmm attualmente credo non sia alla mia portata

    hai qualche esempio a portata di mano o qualche sito dove ci sono esempi di metodi java?
    forse č il caso che ti trovi prima qualche guida java di base
    http://www.anobii.com/isalreadyinuse

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    eh si

  8. #8
    Originariamente inviato da SQLover
    eh si
    č inutile barcamenarsi copiando codice di qua e di lā, magari riesci pure a fare quello che ti serve ma senza capire quello che fai.
    http://www.anobii.com/isalreadyinuse

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    ti ringrazio per i consigli, il problema č che ho poco tempo per separare l'accozzaglia di codice java e html in classi java con metodi richiamati da pagine jsp..

  10. #10
    Originariamente inviato da SQLover
    ti ringrazio per i consigli, il problema č che ho poco tempo per separare l'accozzaglia di codice java e html in classi java con metodi richiamati da pagine jsp..
    spero che tu non stia facendo un lavoro
    http://www.anobii.com/isalreadyinuse

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.