Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146

    [JAVABEAN] separare il codice java da quello html con le javabean

    Salve ragazzi, per imparare ad usare jsp ho iniziato a lavorare su una semplice tabella(presente su oracle) chiamata "persona" unendo sia codice html che java e funziona tutto bene.
    Ora però vorrei separare il codice java dal'html. Per iniziare stavo provando a togliere dalla pagina jsp tutto quello che riguarda la connessione al database, solo che non ho le idee chiare sul da fare. Ecco la pagina jsp di partenza, da ristrutturare diciamo

    codice:
    <%@ page errorPage = "paginaErrore.jsp" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Tabella Persona - Risultato insert</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.*"%> 
            <% 
            Connection connection;// sfrutto la composizione 
             String DbDriver;// La stringa contenente il nome del driver 
             String DbURL;// La stringa contenente la URL del DB 
             String username; // UserID di connessione 
             String password; // Password associata alla username 
    
             connection = null; 
             DbDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
             DbURL = "jdbc:odbc:oracleODBC"; 
             username = "user"; 
             password = "tiger"; 
    
             // Carica il Driver del DBMS 
             Class.forName(DbDriver); 
    
             // Apertura connessione 
             connection = DriverManager.getConnection(DbURL, username, password); 
             
            
    		String nome=new String(request.getParameter("nome"));
    		String cognome=new String(request.getParameter("cognome"));
    		String eta=new String(request.getParameter("eta"));
    		String citta=new String(request.getParameter("citta"));
    		String nazione=new String(request.getParameter("nazione"));
    		int errore = 0; //se rimane pari a zero vuol dire che tutti i campi sono stati riempiti
    		//VERIFICO CHE I CAMPI PASSATI NON SIANO VUOTI
    		if (nome.length()==0){
    			out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Nome!</p>"); 
    			errore = errore +1;   
    			}
    		if (cognome.length()==0){
    			out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Cognome!</p>"); 
    			errore = errore +1;   
    			}
    		if (eta.length()==0){
    			out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Età!</p>"); 
    			errore = errore +1;   
    			}
    		if (citta.length()==0){
    			out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Città!</p>"); 
    			errore = errore +1;   
    			}
    		if (nazione.length()==0){
    			out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Nazione!</p>"); 
    			errore = errore +1;   
    			}
    		
    		
             //Esecuzione istruzione SQL 
             //out.println(errore);
             if (errore!=0)
             {
             	out.println("<p style=\"letter-spacing:1px;\">IMPOSSIBILE ESEGUIRE INSERIMENTO</p></div>");
             }
             else {
             
               
             Statement st = connection.createStatement(); 
                String SQL = null;
                
                SQL = "INSERT INTO persona VALUES (persona_seq.nextval, '"+nome+"','"+cognome+"',"+eta+",'"+citta+"','"+nazione+"')";
    			
    			
             try 
             { 
                 int esito = st.executeUpdate(SQL); 
                 if (esito == 1) 
                    out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento eseguito correttamente!</p></div>"); 
                 else 
                     out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento NON eseguito!</p></div>"); 
    
             } 
             catch (SQLException e) 
             { 
                 System.out.println("Error occurred " + e); 
             } 
    
             //chiude la connessione 
             connection.close(); 
             }
         %> 
    		
    	</div>
    </body>
    </html>
    quelo che fino ad ora ho fato è creare un package chiamato myUtil e dentro una classe chiamata DBManager associata ad un file.java che presenta il seguente codice:

    codice:
    package myUtil;
    
    import java.util.*;
    import java.sql.*;
    
    import mioPackage.*;
    
    public class DBManager {
    	String DbDriver;
    	String DbURL;
    	String username;
    	String password;	
    	Connection conn;
    	
    	
    	/**
    	 * Metodo che restituisce true se la connessione e' aperta.
    	 */
    	public boolean isOpen()
    	{
    		if (this.conn == null)
    			return false;
    		else
    			return true;
    	}
    
    	/**
    	 * Costruttore della classe. Riceve l'url del driver jdbc, la username e la password
    	 * necessari per la connessione al database.
    	 */
    	public DBManager(String url, String usn, String psw)
    	{
    		this.DbDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
    		this.DbURL = url;
    		this.username = usn;
    		this.password = psw;	
    	}
    	
    	private boolean startConnection()
    	{
    		if ( isOpen() )
    			return true;
    		try 
    		{
    			Class.forName(DbDriver);// Carica il Driver del DBMS
    			conn = DriverManager.getConnection(DbURL, username, password);// Apertura connessione
    		}
    		catch (Exception e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	private boolean closeConnection()
    	{
    		if ( !isOpen() )
    			return true;
    		try 
    		{
    			conn.close();
    			conn = null;
    		} 
    		catch (SQLException e) 
    		{
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * Metodo che esegue una query di update o delete. Riceve la stringa sql e
    	 * restituisce true se la query viene eseguita correttamente, false altrimenti.
    	 */
    	public boolean executeUpdate(String sql)
    	{
    		startConnection();
    		Statement st;
    		try 
    		{
    			st = conn.createStatement();
    			st.executeUpdate(sql);
    		}
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		closeConnection();
    		return true;
    	}
    	
    	/**
    	 * Metodo che esegue una query di select. Riceve la stringa sql e la stringa che
    	 * indica la tipologia di classe su cui si vuol restituire il vettore dei risultati.
    	 * Restituisce il vettore dei risultati.
    	 */
    	public Vector<Object> executeSelect(String sql, String type)
    	{
    		startConnection();
    		Vector<Object> v = new Vector<Object>();
    		Statement st;
    		try 
    		{
    			st = conn.createStatement();
    		
    			ResultSet rs = st.executeQuery(sql);
    			persona p;
    		
    			while( rs.next() )
    			{
    				if ( type.equals("persona") )
    				{
    					p = new persona();
    					
    					p.setNome( rs.getString("NOME") );
    					p.setCognome( rs.getString("COGNOME") );
    					p.setEta( rs.getInt("ETA") );
    					p.setCitta( rs.getString("CITTA") );
    					p.setNazione( rs.getString("NAZIONE") );
    					//p.add(u);
    				}
    			}
    		} 
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		closeConnection();
    		return v;
    	}
    }
    cosa dovrei fare ora per richiamare la bean DBManager per avviare una connessione al db??

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    aiuto ragazzi mi sto esaurendo!

    ecco quello che ho fatto nel pomeriggio, anzi da stamattina!

    insert.jsp:

    codice:
    <%@page import="myUtil.*"%>
    <%@page import="java.util.*"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<title>Tabella Persona dell'utente - Risultato insert</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">
    			<ul id="nav">
    			[*]Home
    			[*]Inserisci
    			[*]Elimina
    			[*]Modifica
    			[*]Select
    			[/list]
    			
    
    			<jsp:useBean id="persona" scope="application" class="mioPackage.persona"/>
    			
    			<% 
    				DBManager dbOracle = new DBManager("jdbc:odbc:OracleDB", "user", "tiger");//creo un'istanza di DBManager
    				String nome=new String(request.getParameter("nome"));
    				String cognome=new String(request.getParameter("cognome"));
    				//int eta = Integer.parseInt(request.getParameter("eta"));
    				String eta=new String(request.getParameter("eta"));
    				//String eta = Integer.toString(request.getParameter("eta"));
    				String citta=new String(request.getParameter("citta"));
    				String nazione=new String(request.getParameter("nazione"));
    				
    				//dbOracle.controllaForm(nome, cognome, eta, citta, nazione);
    				//dbOracle.eseguiInserimento(nome, cognome, eta, citta, nazione);
    				String SQL = new String("");
                	SQL = "INSERT INTO persona VALUES (persona_seq.nextval, '"+nome+"','"+cognome+"',"+eta+",'"+citta+"','"+nazione+"')";
    				//dbOracle.eseguiInserimento(SQL);
    				//dbOracle.executeUpdate(SQL);
    				//out.println(SQL);
    
    
    
    /*				int errore = dbOracle.controllaForm(nome, cognome, eta, citta, nazione);
    				if (errore!=0)
            		{
            				out.println("<p style=\"letter-spacing:1px;\">IMPOSSIBILE ESEGUIRE INSERIMENTO</p></div>");
            		}
            		else
            		{
    				dbOracle.eseguiInserimento();
    				}
    */				
    
         %> 
    		
    	</div>
    </body>
    </html>
    Classe DBManager nel package MyUtil:
    codice:
    package myUtil;
    
    //import java.util.*;
    import java.sql.*;
    
    //import mioPackage.*;
    
    public class DBManager {
    	String DbDriver;
    	String DbURL;
    	String username;
    	String password;	
    	Connection conn;
    	
    	
    	/**
    	 * Metodo che restituisce true se la connessione e' aperta.
    	 */
    	public boolean isOpen()
    	{
    		if (this.conn == null)
    			return false;
    		else
    			return true;
    	}
    
    	/**
    	 * Costruttore della classe. Riceve l'url del driver jdbc, la username e la password
    	 * necessari per la connessione al database.
    	 */
    	public DBManager(String url, String usn, String psw)
    	{
    		this.DbDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
    		this.DbURL = url;
    		this.username = usn;
    		this.password = psw;	
    	}
    	
    	private boolean startConnection()
    	{
    		if ( isOpen() )
    			return true;
    		try 
    		{
    			Class.forName(DbDriver);// Carica il Driver del DBMS
    			conn = DriverManager.getConnection(DbURL, username, password);// Apertura connessione
    		}
    		catch (Exception e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	private boolean closeConnection()
    	{
    		if ( !isOpen() )
    			return true;
    		try 
    		{
    			conn.close();
    			conn = null;
    		} 
    		catch (SQLException e) 
    		{
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    
    	//public void controllaForm(String nome, String cognome, String eta, String citta, String nazione)
    	public int controllaForm(String nome, String cognome, String eta, String citta, String nazione)
    	{
    		
    		int errore = 0; //se rimane pari a zero vuol dire che tutti i campi sono stati riempiti
    		//VERIFICO CHE I CAMPI PASSATI NON SIANO VUOTI
    		if (nome.length()==0){
    			System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Nome!</p>"); 
    			errore = errore +1;  
    			}
    		if (cognome.length()==0){
    			System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Cognome!</p>"); 
    			errore = errore +1;   
    			}
    		if (eta.length()==0){
    			System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Età!</p>"); 
    			errore = errore +1;   
    			}
    		if (citta.length()==0){
    			System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Città!</p>"); 
    			errore = errore +1;   
    			}
    		if (nazione.length()==0){
    			System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\">Attenzione! Non hai compilato il campo Nazione!</p>"); 
    			errore = errore +1;   
    			}
    		return errore;
    		
    	}
    	
    	
    	public boolean eseguiInserimento(String SQL)
    	{
    		    
    			try 
    				{ 
    				    startConnection();
    				    Statement st;
    					st = conn.createStatement();
    					int esito = st.executeUpdate(SQL); 
    					if (esito == 1) 
    					System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento eseguito correttamente!</p></div>"); 
    					else 
    					System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento NON eseguito!</p></div>"); 
    
    				} 
    			catch (SQLException e) 
    				{ 
    					System.out.println("Error occurred " + e); 
    				} 
    			closeConnection();
    			return true;
    				
    				
            }
    	
    /*	public boolean eseguiInserimento(String nome, String cognome, String eta, String citta, String nazione)
    	{
    		    String SQL = null;
                SQL = "INSERT INTO persona VALUES (persona_seq.nextval, '"+nome+"','"+cognome+"',"+eta+",'"+citta+"','"+nazione+"')";
    			try 
    				{ 
    				    startConnection();
    				    Statement st;
    					st = conn.createStatement();
    					int esito = st.executeUpdate(SQL); 
    					if (esito == 1) 
    					System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento eseguito correttamente!</p></div>"); 
    					else 
    					System.out.println("
    
    
    
    <div id=\"form\"><p align=\"center\" style=\"letter-spacing:1px; font-size:1.5em;\"> Inserimento NON eseguito!</p></div>"); 
    
    				} 
    			catch (SQLException e) 
    				{ 
    					System.out.println("Error occurred " + e); 
    				} 
    			closeConnection();
    			return true;
    
            }
    */		
    	/**
    	 * Metodo che esegue una query di update o delete. Riceve la stringa sql e
    	 * restituisce true se la query viene eseguita correttamente, false altrimenti.
    	 */
    	public boolean executeUpdate(String sql)
    	{
    		startConnection();
    		Statement st;
    		try 
    		{
    			st = conn.createStatement();
    			st.executeUpdate(sql);
    		}
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		closeConnection();
    		return true;
    	}
    	
    	/**
    	 * Metodo che esegue una query di select. Riceve la stringa sql e la stringa che
    	 * indica la tipologia di classe su cui si vuol restituire il vettore dei risultati.
    	 * Restituisce il vettore dei risultati.
    	 */
    /*	public Vector<Object> executeSelect(String sql, String type)
    	{
    		startConnection();
    		Vector<Object> v = new Vector<Object>();
    		Statement st;
    		try 
    		{
    			st = conn.createStatement();
    		
    			ResultSet rs = st.executeQuery(sql);
    			persona p;
    		
    			while( rs.next() )
    			{
    				if ( type.equals("persona") )
    				{
    					p = new persona();
    					
    					p.setNome( rs.getString("NOME") );
    					p.setCognome( rs.getString("COGNOME") );
    					p.setEta( rs.getInt("ETA") );
    					p.setCitta( rs.getString("CITTA") );
    					p.setNazione( rs.getString("NAZIONE") );
    					//p.add(u);
    				}
    			}
    		} 
    		catch (SQLException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		closeConnection();
    		return v;
    	}
    
    */
    }
    l'errore che ottengocon ogni funzione è:

    org.apache.jasper.JasperException: An exception occurred processing JSP page /insert.jsp at line 38

    root cause

    java.lang.NullPointerException
    myUtil.DBManager.executeUpdate(DBManager.java:165)
    org.apache.jsp.insert_jsp._jspService(insert_jsp.j ava:102)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:722)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:376)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:722)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    ragazzi un aiutino?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    GRAZIE PER L'AIUTO EH

    mi servirebbe capire almeno il metodo, l'approccio da usare..

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.