Latest web development tutorials

Servlet debug

Test / debug sviluppo Servlet del corso è sempre difficile. Servlet spesso comporta un gran numero di interazione client / server, ma può essere difficile da riprodurre l'errore.

Ecco alcuni consigli e suggerimenti che possono aiutare il debug.

System.out.println ()

System.out.println () viene utilizzato come marcatore, utilizzato per verificare se è eseguito un frammento specifico di codice. Possiamo anche stampare il valore della variabile. Inoltre:

  • Poiché gli oggetti di sistema sono parte degli oggetti di base Java, può essere utilizzato ovunque, senza la necessità di installare alcun classi aggiuntive. Questo include Servlet, JSP, RMI, EJB di, fagioli comuni e classi, così come le applicazioni stand-alone.
  • Con diverse fermate presso il punto di interruzione, scrivere a System.out non interferisce con il normale flusso di esecuzione dell'applicazione, che rende la tempistica è cruciale quando è particolarmente prezioso.

Ecco la sintassi da utilizzare System.out.println () è:

System.out.println ( "messaggio di debug");

Tutti i messaggi che vengono generati dalla grammatica sopra saranno registrati nel file di log del server Web.

Il log dei messaggi

Utilizzare il metodo appropriato di registrazione per registrare tutto il debug, di avviso e messaggi di errore, che è una buona idea, si consiglia di utilizzare record di Log4j tutti i messaggi.

Servlet API fornisce anche un modo semplice di uscita, utilizzando il metodo log (), come segue:

// Importa necessario Libreria Java import java.io. *;
import javax.servlet * .;
import javax.servlet.http * .;

public class ContextLog estende HttpServlet {
  pubblico doGet void (richiesta HttpServletRequest, 
      HttpServletResponse risposta) getta ServletException,
         java.io.IOException {
    
      String par = request.getParameter ( "par1");
      // Chiama ServletContext.log due metodi ServletContext contesto = getServletContext ();

      se (par == null || par.equals ( ""))
      // Set di parametri dalla versione Throwable context.log ( "Nessun messaggio ricevuto:",
          nuova IllegalStateException ( "Parametro mancante"));
      altro
          context.log ( "Ecco il messaggio del visitatore:" + il par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter out = response.getWriter ();
      titolo String = "Contesto Log";
      String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<HTML> \ n" +
        "<Head> <title>" + titolo + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" centro \ ">" + titolo + "</ h1> \ n" +
        "<H2 align = \" centro \ "> I messaggi inviati </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext che messaggi di testo a servlet container file di log. Per Tomcat, questi registri si trovano nella <Tomcat-directory-installazione> directory / logs.

Questi file di log sono infatti emergendo errori di frequenza o problemi sono date istruzioni. A causa di questo, si consiglia di utilizzare la clausola di eccezione funzione di cattura log () di solito non succede.

Utilizzare JDB debugger

È possibile utilizzare il comando applet o debug delle applicazioni per eseguire il debug JDB Servlet.

Per eseguire il debug di un servlet, siamo in grado di eseguire il debug sun.servlet.http.HttpServer, e poi eseguirlo come HTTPServer servlet per rispondere alle richieste HTTP sul lato browser. Questo piccolo programma di debug applet è molto simile. E il debug applet è diverso, il vero programma in fase di debug è sun.applet.AppletViewer.

La maggior parte dei debugger nascondere automaticamente i dettagli di come eseguire il debug applet. Allo stesso modo, per il servlet, è necessario eseguire le seguenti operazioni con l'aiuto del debugger:

  • Impostare classpath classpath del debugger, in modo che possa trovare sun.servlet.http.Http-Server e classi correlate.
  • Impostare classpath classpath del debugger, in modo che possa trovare il servlet e classi di supporto, di solito in server_root / servlet e server_root / classi.

Di solito non si desidera server_root / servlet nel classpath, perché disabilita ricaricare servlet. Tuttavia, questa regola contiene è molto utile per il debug. Esso consente di eseguire il debug in HTTPServer Servlet personalizzato caricatore prima di Servlet impostare un punto di interruzione in una Servlet.

Se è stata impostata la corretta classpath classpath, è possibile avviare il debug sun.servlet.http.HttpServer. Servlet possibile impostare i punti di interruzione nel codice che si desidera eseguire il debug, e poi dato Servlet utilizzando un browser Web (http: // localhost: 8080 / servlet / ServletToDebug) presenta una domanda di HTTPServer. Vedrete l'esecuzione del programma si interrompe al punto di interruzione.

utilizzare i commenti

Commenti nel codice vi aiuteranno in vari modi per il debug. Le note possono essere utilizzate in molti altri modi processo di debug.

L'uso di commenti Java Servlet e commenti a riga singola (// ...), commenti multilinea (/ * ... * /) può essere utilizzato per rimuovere temporaneamente po 'di codice Java. Se il bug scompare, basta guardare il codice commentato e identificare il problema.

Informazioni alla clientela e l'intestazione sul lato server

A volte, quando non è come previsto una Servlet, visualizzare la richiesta HTTP originale e la risposta è molto utile. Se si ha familiarità con la configurazione HTTP, è possibile leggere la richiesta e la risposta e vedere quali informazioni queste intestazioni.

importanti tecniche di debug

Ecco alcuni suggerimenti di debug Servlet:

  • Si prega di notare, server_root / classi non saranno ricaricati, e la server_root / servlet potrebbe.
  • Si chiede il browser per visualizzare il contenuto originale della pagina viene visualizzata. Questo aiuta a identificare il formato problema. Di solito è una opzione nel menu "Visualizza".
  • Forzando un full ricaricare la pagina per garantire che il browser non è richiesta prima che il buffer di uscita. In Netscape Navigator, utilizzare Shift-Reload, in Internet Explorer, l'uso Shift-Refresh.
  • Assicurarsi che il metodo init () del servlet accetta un parametro ServletConfig e chiama super.init (config).