Visualizzazione dei risultati da 1 a 7 su 7

Discussione: jsp[verifica ip]

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255

    jsp[verifica ip]

    salve ragazzi ho questo script che funziona bene,ossia fa ciò che voglio,ma fa una cosa strana all'interno del database, ogni vlta che accedo alla pagina con un ip diverso lo memorizza 2 volte nel database siccome a questa pag avrà molti accessi, avrò una tabella con un numero di record doppi.cosa c'è che non va nel codice?

    codice:
    <html>
     <head>
     <title>ip</title>
     </head> 
    <%@ page language="java" %>
     <%@ page import="java.sql.*"%> 
    <%@ page import="java.lang.*"%> 
    <%@ page import="java.util.*"%> 
    <body bgcolor=#FFFF99><center> <big>Domanda </big>
    
    
     
    <%  
    String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; String DB_Url = ("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/ip/ip.mdb"); 	
    try 	
    { 		
    Class.forName(DRIVER); 	
    } 	
    catch(ClassNotFoundException e) 
    	{ 		
    System.out.println(e.toString());	 
    System.out.println("File non trovato"); 		
    System.exit(1); 	
    } 	
    try 	
    { 		
    Connection conn= DriverManager.getConnection(DB_Url); 		
    Statement st = conn.createStatement(); 		
    String ip = new String(request.getRemoteAddr()); 		
    out.println(ip); 		
    String query=""; 		
    query="SELECT ip from ipt WHERE ip"; 		
    ResultSet rs = st.executeQuery(query);   		
    if(!rs.next()) 		
    {  	   		
    out.println("è la prima volta che accedi a questa pagina"); 			
    //crea la stringa SQL per l'aggiornamento 			
    String stringaSql = new String ("INSERT INTO ip_tab (ip) VALUES ('"+ip+"')");
    st.executeUpdate(stringaSql); 			
    int esito; 			
    esito = st.executeUpdate(stringaSql); 			
    //controlla che tutto sia andato bene   			
    if (esito==1) 			
    { 		    		
    out.println("eseguita con successo"); 			
    } 			
    else		 			
    { 				
    out.println("Errore, non  stato possibile eseguire"); 			
    } 		}//if  		
    else 		
    {  			
    //l'utente ha effuato la visita 			
    out.println("Spicenti!
    "); 				
    }//else  	
    conn.close(); 	
    }  	
    catch(SQLException ex)  	
    { 		
    System.err.println("SQLException: " + ex.getMessage()) ; 	
    } 	
    %>	 		
    
    
     </font> 
    </body> 
    </html>
    saluti

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Mi sembra che il problema sia qua:

    codice:
    . . .
    st.executeUpdate(stringaSql); 			
    int esito; 			
    esito = st.executeUpdate(stringaSql);
    . . .
    Esegui due volte la executeUpdate().

    Attenzione, poi vedo una cosa molto pericolosa! Se il caricamento del driver del DB va male, richiami una System.exit(1)... questo non va assolutamente bene, in quanto ciò comporta la terminazione non solo della JSP, ma anche del servlet container che la sta eseguendo!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    effettivamente hai ragione su entrambe le cose...
    ps siccome studio da poco jsp, mica c'è qualke software che permette di debuggare passo l'applicazione web.
    saluti

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    23
    se posso darti un consiglio sul codice nn scrivere codice java nella jsp, crea un java bean e richiama dalla jsp tali metodi

  5. #5
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Più che software third-party, ti posso suggerire il debugger standard di Java: l'ho usato solo un paio di volte, ma da quel che ricordo è un bello strumento di sviluppo.
    Ti linko la documentazione (cerca "jdb" all'interno del documento):
    http://download.oracle.com/docs/cd/E...dex.html#basic

    Ricordati sempre, però, che i numeri di linea di un file JSP non corrispondono a quelli del codice che viene effettivamente eseguito: per poter impostare - ad esempio - i breakpoint, devi precompilare la pagine e recuperare il file .java ad esse associato (con Tomcat lo trovi sotto la directory "work")

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    255
    Salve ragazzi, ho seguito il vostro consiglio ho messo tutto in una bean il codice e richiamo le classi, ma c'è sempre qualcosa di strano....se decommento l'ultimo "else" mi genera i seguenti errori:
    Generated servlet error: Syntax error, insert "}" to complete Block
    Generated servlet error: Syntax error on token "}", delete this token
    Generated servlet error: Syntax error, insert "}" to complete ClassBody
    se invece lo commento, va tutto bene,anche se poi nel caso in cui l'ip è già presente nel database, non mi stampa nulla a video ossia: out.println("Spicenti, hai gia votato!
    ");
    codice:
    <html>
    <head>
    <title>Sondaggio - tutorial JSP</title>
    <meta name="author" content="D" />
    <%@page language="java"%>
    <jsp:useBean id="bean" scope="page" class="beans.UtentiBean"/>
        <% 
        if(request.getParameter("invio")!=null) 
        {
            bean.setDbUrl("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:/Programmi/Apache Software Foundation/Tomcat 5.5/webapps/sondaggio/sondaggio.mdb");
            bean.connect();
            String risposta = request.getParameter("risposta");
            bean.setRisposta(risposta);
            String ip = new String(request.getRemoteAddr());
            bean.setIp(ip);
            out.println(ip);
        } 
        %>
    </head>
    <body>
    <% 
    //salvataggio risposta
    boolean ipC = false;
    ipC = bean.controlloIP();
    if(ipC==true)
    {
        boolean salvataggio = false;
        salvataggio = bean.salvaRisposta();
        if(salvataggio==true)
        { 
        %>
            <h1>Conferma registrazione</h1>
    	    
    
    La tua registrazione &egrave; avvenuta correttamente.</p>
    	    
    
    Questi sono i tuoi dati: 
    
    	    La tua risposta: <%=bean.getRisposta()%>
    
    	    </p>
        <% 
        } 
        else 
        { 
        %>
                <h1>Errore!</h1>
                Motivo dell'errore: 
    
                <%=bean.getMsgErrore()%>
    	<% 
        }
    }    
    /*
    else
    {
    %>
        out.println("Spicenti, hai gia votato!
    ");
    }
    <% 
    */
    bean.disconnect(); 
    %>
    
    
    
    Visualizza i risultati parziali
    
    </body>
    </html>
    saluti

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    O fai così

    codice:
    . . .
    else
    {
    %>
        Spiacenti, hai gia votato!
    
    <%
    }
    
    bean.disconnect(); 
    . . .
    o così

    codice:
    . . .
    else
    {
        out.println("Spiacenti, hai gia votato!
    ");
    }
    
    bean.disconnect(); 
    . . .
    Come hai fatto tu le parentesi non erano correttamente chiuse dentro alle scriptlet Java

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.