Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA EE] Prima servlet, aiutatemi a capire :-(

    Ciao,
    ho appena iniziato a studiare le servlet ma le slide non sono chiarissime...

    Allora ho creato questa prima servlet di esempio:

    codice:
    import java.io.IOException;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    /** Servlet implementation class servletXGET */
    
    public class servletXGET extends HttpServlet {
    	
    	public void doGet(HttpServletRequest req, HttpServletResponse res)
    	throws ServletException, IOException{
    		
    		res = setContentType("text/html");	// Imposta il tipo di contenuto
    		// Preleva lo stream dal response
    		PrintWriter toClient = res.getWriter();
    		
    		// Invio la pagina html al broswer:
    		toClient.println("<html>");
    		toClient.println("<title>Esempio di Servlet</title>");
    		toClient.println("<body>");
    		toClient.println("</body>");
    		toClient.println("</html>");
    		toClient.close();
    	}
    
    }
    Ho più di qualche dubbio in merito...

    Questa servlet contiene il solo metodo doGet che riceve come parametri un oggetto req di tipo HttpServletRequest ed un oggetto res di tipo HttpServletResponse, chi glieli invia questi oggetti come parametro? il client che accede alla servlet? e cosa rappresentano esattamente?

    Da quello che ho capito se non solleva le eccezioni dei due tipi indicati il metodo allora imposta il tipo di contenuto come testo o html (gli stò dicendo che invierà materiale html o testuale di fatto?)

    Poi da quello che ho capito alla riga: PrintWriter toClient = res.getWriter(); preleva lo stream del response (praticamente che fà? mette dentro toClient uno stream scrivente per inviare dati di testo al client?) che tipo di oggetto è PrintWriter ?!?!

    E poi da quello che ho capito nella parte dopo "crea" la pagina Html che sarà inviata al broswer.

    Per invocare la servlet potrei fare una pagina web che contiene un link a questa servlet credo e quindi a rigor di logica mi si dovrebbe aprire la pagina generata dalla servlet, giusto?

    Ora...io stò usando Eclipse...sò che è possibile eseguire le servlet dentro Eclipse...sapete dirmi come?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    Re: [JAVA EE] Prima servlet, aiutatemi a capire :-(

    Questa servlet contiene il solo metodo doGet che riceve come parametri un oggetto req di tipo HttpServletRequest ed un oggetto res di tipo HttpServletResponse, chi glieli invia questi oggetti come parametro? il client che accede alla servlet? e cosa rappresentano esattamente?
    le servlet girano all'interno di un servlet container, che fa parte dell'application server. Quei parametri vengono quindi impostati dal servlet container. Il Request rappresenta la richiesta fatta dall'utente e formalizzata in un oggetto di quel tipo dal servlet container, il Response è la risposta da restituire al client. Essenzialmente ti viene passato un oggetto semivuoto da riempire e parametrizzare.

    Da quello che ho capito se non solleva le eccezioni dei due tipi indicati il metodo allora imposta il tipo di contenuto come testo o html (gli stò dicendo che invierà materiale html o testuale di fatto?)
    in questo modo imposti un header html che dice al client che stai inviando testo in formato html. L'html è testo, intuitivamente puoi considerare il text nella dichiarazione come un tipo generico, e l'html come un sottotipo di text.

    Poi da quello che ho capito alla riga: PrintWriter toClient = res.getWriter(); preleva lo stream del response (praticamente che fà? mette dentro toClient uno stream scrivente per inviare dati di testo al client?) che tipo di oggetto è PrintWriter ?!?!
    Hai capito bene, preleva dalla risposta che stai generando uno buffer testuale. In altre parole è un contenitore in cui infili del testo da inviare al client. Tale invio lo farà il servlet container.

    E poi da quello che ho capito nella parte dopo "crea" la pagina Html che sarà inviata al broswer.

    Per invocare la servlet potrei fare una pagina web che contiene un link a questa servlet credo e quindi a rigor di logica mi si dovrebbe aprire la pagina generata dalla servlet, giusto?

    Ora...io stò usando Eclipse...sò che è possibile eseguire le servlet dentro Eclipse...sapete dirmi come?

    Grazie
    devi impostare l'ambiente di esecuzione di eclipse. Devi impostare un application server (tipo glassfish, tomcat o jboss Application Server) ed aggiungergli la tua applicazione. Ci sono molte guide per fare ciò sul sito di eclipse, con tanto di immagini. Guarda quelle.

  3. #3
    Ti ringrazio.

    comunque io ho già installato e configurato GlassFish (dobbiamo usare questo AS per il corso), solo che non riesco a capire come fare il deploy dell'applicazione da Eclipse e come eseguire...una collega tempo fà mi aveva fatto vedere che con eclipse poteva deployare e direttamente da là si apriva la finestrella stile broswer che visualizzava il contenuto dell'esecuzioni delle servlet e delle jsp...mi sai dire come si fa il deploy?

    Grazie mille
    Andrea

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    fai click su run, dovrebbe partire il run configurator, dovrai creare un nuovo server in cui gli darai l'indirizzo di glassfish. Ma ti ripeto, cerca su google, metti eclipse e glassfish e usciranno tonnellate di roba.

    Ah, il progetto ovviamente deve essere un progetto web....

  5. #5
    Allora,
    forse non mi sono spiegato bene, io ho già Eclipse e GlassFish installati e configurati (cioè ho fatto proprio scaricare GlassFish ad Eclipse...posso runnarlo e se vado in Firefox e faccio 127.0.0.1:4848 mi si apre la pagina di configurazione di GlassFish...quindi c'è...) ma non riesco a far runnare la mia servlet di esempio...

    Io ho fatto così:

    1) Ho creato un nuovo Dynamic Web Project
    2) Ho creato una servlet chiamata Esempio contenente il seguente codice banalissimo
    codice:
    /* CODICE DEL FILE Esempio.java */ import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    public class Esempio extends HttpServlet {
    
        static final long serialVersionUID = 33;
    	 
        public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
            throws IOException, ServletException
        {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
    
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Io sono un titolo!</title>");
            out.println("</head>");
            out.println("<body bgcolor=\"white\">");
            out.println("<h1>Questa è una prova!</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }
    /* FINE CODICE DEL FILE Esempio.java */
    3) Vado nella view Server di Eclipse e c'è il mio simpatico GlassFish messo in stopped, premo il tastino verde (start the server) e quello si runna ed infatti mi dà il seguente messaggino di conferma:
    codice:
    Name of the domain started: [domain1] and
    its location: [/home/andrea/GlassFish-Prelude/glassfishv3-prelude/glassfish/domains/domain1].
    Admin port for the domain: [4848].
    4) Ora mi metto sulla mia classe Esempio e provo a farla eseguire clickando sul tastino verde che dice: "Run Esempio.java" ma non succede nulla...se vado nella view markers mi segna i seguenti problemi:

    codice:
    Description	Resource	Path	Location	Type
    HttpServlet cannot be resolved to a type	Esempio.java	/test/src	line 5	Java Problem
    HttpServletRequest cannot be resolved to a type	Esempio.java	/test/src	line 9	Java Problem
    HttpServletResponse cannot be resolved to a type	Esempio.java	/test/src	line 10	Java Problem
    ServletException cannot be resolved to a type	Esempio.java	/test/src	line 11	Java Problem
    The import javax.servlet cannot be resolved	Esempio.java	/test/src	line 2	Java Problem
    The import javax.servlet cannot be resolved	Esempio.java	/test/src	line 3	Java Problem
    Perchè ?!?! che significa ?!? l'esempio è banalissimo e dovrebbe essere corretto...mi sai aiutare?

    Grazie
    Andrea

  6. #6
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    perché devi fare il deploy del tuo progetto su glassfish, non ricordo come si fa ma era molto semplice. Cerca fra le proprietà di glassfish nelle impostazioni di eclipse.

    Quelle classi non vengono trovate perché mancano le librerie di glassfish, se dopo che hai fatto il deploy continua a darti quell'errore metti mano alle librerie utilizzate dal progetto e metti le runtime di glassfish.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.