Latest web development tutorials

Servlets debuggen

Testing / Debug-Servlet Entwicklung des Kurses ist es immer schwierig. Servlet beinhaltet oft eine große Anzahl von Client / Server-Interaktion, kann jedoch schwierig sein, den Fehler zu reproduzieren.

Hier sind einige Tipps und Anregungen, die Sie debuggen helfen können.

System.out.println ()

System.out.println () wird als Marker verwendet, um zu testen, ob ein bestimmtes Stück Code verwendet wird ausgeführt. Wir können auch den Wert der Variablen ausdrucken. Darüber hinaus:

  • Da Systemobjekte Teil der Kern-Java-Objekte sind, kann es überall ohne die Notwendigkeit, zusätzliche Klassen zu installieren verwendet werden. Dazu gehören Servlets, JSP, RMI, EJB, gemeinsame Bohnen und Klassen, sowie Stand-alone-Anwendungen.
  • Mit verschiedenen Stationen an den Haltepunkt, schreiben Sie an System.out nicht mit dem normalen Ablauf der Ausführung der Anwendung stören, die es der Zeitpunkt macht, ist entscheidend, wenn es besonders wertvoll ist.

Hier ist die Syntax zu verwenden System.out.println () ist:

System.out.println ( "Debugging-Meldung");

Alle Nachrichten, die durch die obige Grammatik generiert werden, in Web-Server-Log-Dateien aufgezeichnet werden.

Das Nachrichtenprotokoll

Verwenden Sie die entsprechende Methode der Protokollierung aller debug, Warn- und Fehlermeldungen zu erfassen, die eine sehr gute Idee ist, wird empfohlen, LOG4J Aufzeichnung aller Nachrichten zu verwenden.

Servlet API bietet auch eine einfache Möglichkeit der Ausgabe, die log () Methode verwendet wird, wie folgt:

// Import notwendig Java-Bibliothek import java.io. *;
Import javax.servlet * .;
Import javax.servlet.http * .;

public class ContextLog erstreckt HttpServlet {
  public void doGet (HttpServletRequest Anfrage, 
      HttpServletResponse Antwort) wirft ServletException,
         java.io.IOException {
    
      String par = request.getParameter ( "par1");
      // Aufruf ServletContext.log zwei Methoden ServletContext context = getServletContext ();

      if (Par == null || par.equals ( ""))
      // Parametersatz von Throwable Version context.log ( "No-Nachricht empfangen:",
          neue Illegal ( "Missing Parameter"));
      sonst
          context.log ( "Hier ist die Botschaft des Besuchers:" + par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter out = response.getWriter ();
      String title = "Context Log";
      String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<Html> \ n" +
        "<Head> <title>" + Titel + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + Titel + "</ h1> \ n" +
        "<H2 align = \" center \ "> Nachrichten gesendet </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext es Textnachrichten Container Protokolldatei Servlet. Für Tomcat können diese Protokolle in der <Tomcat-Installationsverzeichnis> / logs-Verzeichnis.

Diese Protokolldateien entstehen in der Tat Frequenzfehler oder Probleme Anweisungen gegeben. Aus diesem Grund empfehlen wir die Funktion log () Ausnahme catch-Klausel mit der Regel nicht passieren.

Verwenden Sie JDB Debugger

Sie können das Applet oder die Anwendung Debuggen jdb Befehl zum Debuggen von Servlets verwenden.

Um ein Servlet debuggen, können wir sun.servlet.http.HttpServer debuggen, und es dann als Httpserver Servlet ausführen zu reagieren, um HTTP-Browser die Seite anfordert. Das Debugging-Applet kleines Programm ist sehr ähnlich. Und das Debuggen Applet unterscheidet, wird das eigentliche Programm gedebuggt ist sun.applet.AppletViewer.

Die meisten Debugger wird automatisch die Details verbergen, wie Applet zu debuggen. In ähnlicher Weise für das Servlet, müssen Sie die folgenden mit Hilfe des Debuggers tun:

  • Stellen Sie Ihren Debugger Classpath Classpath, so dass es sun.servlet.http.Http-Server und verwandte Klassen finden kann.
  • Stellen Sie Ihren Debugger Classpath Classpath, so dass es Ihre Servlet und Unterstützung Klassen finden kann, in der Regel in server_root / Servlets und server_root / Klassen in.

Sie wollen nicht, in der Regel in server_root / Servlets in Ihrem Classpath, weil es Servlet deaktiviert neu zu laden. Allerdings ist diese Regel enthält, ist sehr nützlich für das Debuggen. Es ermöglicht Ihnen, in Httpserver benutzerdefinierte Servlet-Loader zu debuggen, bevor Servlets einen Haltepunkt in einem Servlet gesetzt.

Wenn Sie die richtige Classpath Classpath eingestellt haben, können Sie mit dem Debuggen sun.servlet.http.HttpServer starten. Servlets können Haltepunkte im Code setzen Sie debuggen möchten, und dann gegeben Servlet einen Web-Browser (http: // localhost: 8080 / servlet / ServletToDebug) eine Anforderung an Httpserver. Sie werden die Programmausführung stoppt an der Unterbrechungsstelle zu sehen.

Verwenden Sie Kommentare

Kommentare im Code wird auf verschiedene Weise für die Fehlersuche helfen. Notizen können auf viele andere Arten verwendet werden Debug-Prozess.

Die Verwendung von Java Servlets Kommentare und einzeilige Kommentare (// ...), multi-line Kommentare (/ * ... * /) kann vorübergehend verwendet werden, um einige Java-Code zu entfernen. Wenn der Fehler verschwindet, sehen Sie nur an der kommentierten Code und das Problem zu identifizieren.

Client- und Server-Side-Header-Informationen

Manchmal, wenn ein Servlet nicht wie erwartet, sehen die ursprüngliche HTTP-Anforderung und Antwort ist sehr nützlich. Wenn Sie mit HTTP-Konfiguration vertraut sind, können Sie die Anfrage und Antwort lesen und sehen, welche Informationen diese Header.

Wichtige Debugging-Techniken

Hier sind einige Tipps Servlet-Debugging:

  • Bitte beachten Sie, server_root / Klassen werden nicht erneut geladen werden, und die server_root / Servlets Macht.
  • Er fordert den Browser den ursprünglichen Inhalt der Seite anzuzeigen zeigt es. Dies trägt dazu bei, das Problem Format zu identifizieren. Es ist in der Regel eine Option im Menü "Ansicht".
  • Durch Erzwingen einer Voll die Seite neu laden, um sicherzustellen, dass der Browser keine Anforderung vor dem Ausgabepuffer ist. In Netscape Navigator, Shift-Reload, im Internet Explorer können Sie mit Umschalttaste-Refresh verwenden.
  • Stellen Sie sicher, dass die Servlets init () Methode akzeptiert einen Parameter ServletConfig und ruft super.init (config).