Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    [JAVA] Servlet non funzionante...

    ragazzi io ho compilato una servlet in java che prendendo 2 stringhe(nome,cognome) da una pagina html invia i dati alla servlet che li memorizza in un database.Il file html è qsto:
    codice:
    <form action="/Registra/inserisci" method="POST">    
    Your name: <input type="text" nome="nome" />
      
    Your surname: <input type="text" cognome="cognome" />
        
    <input type="submit" value="Greet me!" />   
    </form>
    mentre il codice della servlet è qsto:

    codice:
    //importiamo i package necessari.
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.sql.*;
    
    public class inserisci extends HttpServlet
    {
    	public void init()
    	{
    		System.out.println("<<<[ Insert inizializzata ]>>>");
    	}
    	
    	protected void service(HttpServletRequest request, HttpServletResponse response)throws IOException
    	{
    /*
    dichiariamo due variabili di tipo java.lang.String e le valorizziamo utilizzando dei parametri della request(nome,cognome).
    /**/
    		String nome = request.getParameter("nome");
    		String cognome = request.getParameter("cognome");
    		
    /*
    gazie alle API JDBC apriamo una connessione nei confronti del DB ed istanziiamo un oggetto java.sql.Statement utilizzando il driver di connessione per mysql scaricabile all'url http://www.mysql.org.
    /**/
    
    		Connection con =null;
    		Statement sta = null;
    		try
    		{
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ins","fabio","fabio");	
    		 	sta = con.createStatement();
    /*
    A questo punto siamo in grado di lanciare l'istruzione SQL per inserire i dati utilizzando per tale operazione i parametri presi dalla request.
    /**/
    			sta.executeUpdate("INSERT INTO anagrafica VALUES('','"+nome+"','"+cognome+"');");
    
    /*
    La risposta verrà inviata al client con un java.io.PrintWriter che scrive sull'oggetto response.
    Notare come il content della response viene settato in modalita' text/plain.
    /**/
    			PrintWriter out = response.getWriter();
    			response.setContentType("text/plain");
    			out.print("Parametri inseriti\nnome: " + nome +"\ncognome: " + cognome);
    		 }catch(Exception e)
    		{
    			System.out.println(e);
    		 }finally
    		{
    			try
    			{
    /*
    Come ultima operazione andiamo a deallocare le risorse prima utilizzate.
    /**/
    				if(sta!=null)sta.close();
    				if(con!=null)con.close();
    			}catch(Exception e)
    			{
    				System.out.println(e);
    			}
    		}
    	}
    }
    quando avvio la servlet con il Tomcat la pagina è bianca e nessun dato viene memorizzato...
    cosa cè che non va?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Vedo che hai ridefinito il metodo service :master:
    La documentazione dice "There's almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above)."

    Io di servlet non me ne intendo ma ricordo che in casi come questo il metodo da ridefinire sia doGet/doPost :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Servlet non funzionante...

    Originariamente inviato da umegg
    quando avvio la servlet con il Tomcat la pagina è bianca e nessun dato viene memorizzato...
    cosa cè che non va?
    Prima ci sarebbe da premettere:

    Il path della action "/Registra/inserisci". Uno slash iniziale così denota in generale la "server root" (non la context root della applicazione). Quindi Registra è il nome della webapp?

    Se Registra è la webapp, allora /inserisci è un path sotto la context root. È stato correttamente "mappato" nel DD (web.xml) e la servlet è correttamente dichiarata?

    E come ha già detto Alex'87, in una HttpServlet sovrascrivere il service(HttpServletRequest, HttpServletResponse) non è tecnicamente sbagliato di per sé ..... ma non si fa, si usano tipicamente solo doGet() e/o doPost().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    con il doGet mi da qsto errore:


    HTTP Status 405 - HTTP method POST is not supported by this URL type Status report message HTTP method POST is not supported by this URL description The specified HTTP method is not allowed for the requested resource (HTTP method POST is not supported by this URL). Apache Tomcat/6.0.26

  5. #5

    Re: Re: [JAVA] Servlet non funzionante...

    Originariamente inviato da andbin
    Prima ci sarebbe da premettere:

    Il path della action "/Registra/inserisci". Uno slash iniziale così denota in generale la "server root" (non la context root della applicazione). Quindi Registra è il nome della webapp?

    Se Registra è la webapp, allora /inserisci è un path sotto la context root. È stato correttamente "mappato" nel DD (web.xml) e la servlet è correttamente dichiarata?
    si credo che sia correttamente mappato nel web.xml...
    ecco il file:
    codice:
    <?xml version="1.0"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app>
    <servlet>
    <servlet-name>inserisci</servlet-name>
    <servlet-class>inserisci</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>inserisci</servlet-name>
    <url-pattern>/inserisci</url-pattern>
    </servlet-mapping>
    </web-app>

    e Registra è la cartella della webapp...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da umegg
    con il doGet mi da qsto errore:

    HTTP Status 405 - HTTP method POST is not supported by this URL
    Se il <form> fa un POST .... è chiaro che doGet() non è il corrispondente!!! Perché ti "risponde" il doPost() predefinito (in HttpServlet) che segnala il non supporto proprio perché non "sovrascritto"!

    Detto in altro modo: il tuo form fa un POST? --> doPost().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Originariamente inviato da andbin
    Se il <form> fa un POST .... è chiaro che doGet() non è il corrispondente!!! Perché ti "risponde" il doPost() predefinito (in HttpServlet) che segnala il non supporto proprio perché non "sovrascritto"!

    Detto in altro modo: il tuo form fa un POST? --> doPost().
    stessa cosa...pagina bianca...

  8. #8
    fai in questo modo e ti togli il pensiero:
    codice:
    protected void processRequest(HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException {
    //codice della servlet
    }
    
    protected void doGet(HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
    I metodi doGet e doPost devono essere sempre ridefiniti
    http://www.simplesoft.it

  9. #9
    ho fatto cm dici tu ma rimane la stessa cosa...
    boh...

  10. #10
    se il server non ti visualizza esplicitamente errori http allora vuol dire che ci sarà qualche errore nel codice della servlet. Hai gaurdato i log nella console magari per vedere si vengono stampate le System.ou.println() o se viene generata qualche Exception, o ci sara qualche piccolo errore nella query sql o nel collegamento al database. Che ambiente usi Eclipse o Netbeans etc.. ?
    http://www.simplesoft.it

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.