Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255

    [jsp]errore: Generated servlet error: stringaSql cannot be resolved

    Salve ragazzi da poco mi sto avvicinando al mondo del jsp, è sto guardano qualke script sul web, tipo quello del sondaggio, ma mi genera un errore strano(credo di sql).

    questo è il file html
    codice:
    <html>
    <head> 	<title>Sondaggio</title> </head> 
     <body> 
     <big>Domanda:</big> 
    <form action="vota.jsp"> 
    <input name="risposta" type="radio" value="0">Risposta 1
     
    <input name="risposta" type="radio" value="1">Risposta 2
     
    <input name="risposta" type="radio" value="2">Risposta 3
     
    <input name="risposta" type="radio" value="3">Risposta 4
     
    <input type="submit" value="vota"> </form> 
    Visualizza i risultati parziali </font> 
    </body> </html>
    mentre questo è il file voti.jsp
    codice:
    <head> 
    <title>Sondaggio</title> </head> 
    <body> <font face="verdana" color="#3300ff" size="2"> 
    <%@ page errorPage = "PaginaErrore.jsp" %> 
    <%@ page language="java" import="java.sql.*" %> 
    <%@ page language="java" import="java.io.sql.*" %> 
    <%      
    Connection conn = null;
    //carica il file di classe del driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    
    //crea la connessione con l'origine dati
    conn = DriverManager.getConnection("jdbc:odbc:sondaggio","null","null");
    
    //crea lo statement
    Statement st = conn.createStatement();
    
    //legge il parametro contenente la risposta
    String preferenza = new String (request.getParameter("risposta"));
    out.println(preferenza);
    String ip = new String(request.getRemoteAddr());
    
    //crea la stringa SQL per l'aggiornamento
    stringaSql ="INSERT INTO frequenze (risp) VALUES '"+preferenza+"'";
    
    //stringaSql = "UPDATE frequenze SET risp = '"+preferenza+"' ";
    st.executeUpdate(stringaSql);
    st.close();
    conn.close();
    %> 
    
    
    Visualizza i risultati parziali 
    </font> </body> </html>
    che genera il seguente errore:
    codice:
    org.apache.jasper.JasperException: Unable to compile class for JSP  An error occurred at line: 10 in the jsp file: /vota.jsp Generated servlet error: stringaSql cannot be resolved  An error occurred at line: 10 in the jsp file: /vota.jsp Generated servlet error: stringaSql cannot be resolved   	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) 	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) 	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    il db è molto semplice si chiama sondaggio.mdb

    codice:
    CREATE TABLE `frequenza`
    (
    `risp` int
    ) ;

    saluti

  2. #2
    Semplicemente stai usando la variabile stringaSql che non è definita da nessuna parte.
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    ops grazie......
    cmq ora va avanti,ma genera il seguente errore quando tenta la connessione:
    [Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non specificato.

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Mi sembra di capire che il caricamento del driver (tramite la Class.forName) sia sotto commento...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    no è solo un errore di quote, il codice in quella parte non è commentato...l'errore rimane

  6. #6
    Hai definito la connessione ODBC? Leggi qui
    Al mio segnale... scatenate l'inferno!

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da s_p_81
    no è solo un errore di quote
    Infatti, per il codice si usa il tag CODE, non il tag QUOTE.

    Ho sistemato io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    ok...risolto il problema della connessione, messa in una classe a parte e funziona,inserisce i voti del sondaggio nel db,ma ora sorge un altro problema. vorrei vedere i risultati dei voti, credo funzioni,ma nn visualizza la pagina.

    questa la classe per la connessione e la query;
    codice:
    package beans; 
    import java.io.*;  
    import java.util.*;  
    import java.sql.*; 
    public class UtentiBean  
    {     
    private String risposta;     
    private Connection c;     
    private Statement st;     
    private String dbUrl;      
    
    //variabile booleana per gestire la sessione dell'utente    
    private boolean auth=false;    
    private boolean checkSave=false;      
    
    //variabile per recuperare e gestire i messaggi di errore     
    private String msgErrore="";          
    
    //connessione al database 	
    public void setDbUrl(String dbUrl)  	
    {    		
    this.dbUrl = dbUrl;   	
    }   	
    public void connect()  	
    {    		
    try  		
    {     			
    /* the following command load the jdbc driver */
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");     			
    c = DriverManager.getConnection(dbUrl,null,null);     			
    st = c.createStatement();    		
    }  		
    catch(Exception e) 		
    { 			
    e.printStackTrace(); 		
    }    	
    }	     	
    public void disconnect()  	
    {    		
    try  		
    {  	   		
    c.close();    		
    } 		
    catch(Exception e) 		
    { 			
    e.printStackTrace(); 		
    }   	
    } 	 	
    //fine metodi di connessione al database 	
    
    //metodi SET e GET 	
    public String getRisposta()  	
    { 		
    return risposta; 	
    } 	
    public void setRisposta(String risposta) 	
    { 		
    this.risposta = risposta; 	
    } 	 	
    
    //metodo per recuperare il messaggio in caso d'errore   	
    public String getMsgErrore()  
    	{        		
    return msgErrore;      
    }       	/
    /metodo per ottenere l'autorizzazione dopo il login         
    public boolean getAuth()  	
    {  		
    return auth;     
     }  
    public boolean loginRisposta() 	
    { 		
    auth = false; 		
    try 		
    { 	          
    int numRisp = 4; //numero possibili risposte 		    
    int votiTot; //numero totale dei voti 		    
    float percentuale; //percentuale per ogni risposta 		    
    int frequenze[] = new int[numRisp]; //numero di voti per ogni risposta 		    
    String risposte[] = new String[numRisp]; 
    //array di stringhe con le risposte  		  
    risposte[0]="Risposta 1"; 		    
    risposte[1]="Risposta 2"; 		   
     risposte[2]="Risposta 3"; 		  
      risposte[3]="Risposta 4"; 		   
     //crea il recordset -> calcolo dei voti totali 		    
    ResultSet r = st.executeQuery("SELECT sum(risp) as tot from frequenze");
    r.next(); 		   
    votiTot = r.getInt("tot"); 		   
    System.out.println("Totale dei voti: "+votiTot+"
    "); 		  
    //calcolo dei voti per ogni singola risposta e stampa 		    
    for (int i=0; i<numRisp; i++) 		    
    { 			
    r=st.executeQuery("SELECT sum(risp) as tot from frequenze WHERE risp = "+i);
    r.next(); 			
    frequenze[i]=r.getInt("tot"); 			
    System.out.println(risposte[i]+": "+frequenze[i]+" voti
    "); 			
    auth = true; 		    
    }//for 		   
     System.out.println("
    
    ");                     
    System.out.println("<table align=center border=0>");            
     //creazione del grafico dei voti                     
    for (int i=0; i<numRisp; i++)                     
    {                       
    //calcolo della percentuale                        
    percentuale = (float)frequenze[i]/votiTot*100;                         
    System.out.println("<tr valign='center' align='left'><td>");
    System.out.println(risposte[i]+"</td><td>");                         
    System.out.println("[img]blu.gif[/img]");                       
      System.out.println((int)percentuale+"%</td>");                      
    }//for                  
    System.out.println("</tr>");                 
    System.out.println("</table>");                 
    } 		
    catch (Exception e)  		
    {  		    
    msgErrore = e.getMessage();                 
    } 	
    return auth; 	
    }
    mentre questa è la pagina che dovrebbe richiama la classe e dovrebbe visualizzare i risultati,
    non restituisce nessun errore,ma non visualizza i dati del metodo: public boolean loginRisposta()

    codice:
    <html> 
    <head> 
    <title>Risultati del sondaggio</title> 
    </head> 
    <%@page language="java"%> 
    <%@page language="java" import="java.sql.*" %> 
    <jsp:useBean id="bean" scope="session" class="beans.UtentiBean"/> 
    <body bgcolor=#FFFF99>
    <center> <big>Domanda del sondaggio</big>
    
    
     
    <% bean.setDbUrl("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/sondaggio/sondaggio.mdb");
    bean.connect(); 
    bean.loginRisposta();  
    if (bean.getAuth())  {  %> 	
    
    
    Operazione effettuata</p> 
    <%  }  else  {  %> 	
    <h1>Errore!</h1> 	
    
    
    Operazione non effettuata</p> 
    Motivo dell'errore: 
     	
    <%=bean.getMsgErrore()%> <%  
    } 
    bean.disconnect();  %> 
    </body> 
    </html>
    ps il db è un db di access con una tabella con una sola colonna di tipo numerico
    nomedb=sondaggio
    tabella =frequenze
    nome_colonna= risp


    saluti

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Non visualizza la pagina nel senso che ti ritorna un messaggio di errore, oppure che nel browser vedi una pagina bianca?
    Ad occhio, l'unica criticità che vedo sulla JSP la direttiva

    codice:
    <%@page language="java"%>
    La dichiari due volte, mentre deve essere presente una sola volta in ogni file ("include" comprese).

    Se il problema non fosse questo, come passi per il debug ti suggerisco:
    - verificare il codice HTML ritornato al browser
    - verificare sulla console (o sul file di log) del servlet container se si sono verificati errori
    - inserire della System.out nella pagina jsp per analizzare il flusso di esecuzione

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.