English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Um zu testen/Die Fehlersuche in einer JSP- oder Servlet-Programm ist immer so schwierig. JSP- und Servlets-Programme neigen dazu, sich mit einer großen Anzahl von Client-/Die Interaktion zwischen Servern kann zu Fehlern führen, die schwer zu reproduzieren sind und ein schwieriges Fehlerumfeld darstellen.
Nachfolgend werden einige nützliche Tipps und Empfehlungen gegeben, um Ihnen bei der Fehlersuche zu helfen.
System.out.println() kann sehr einfach dazu dienen, zu markieren, ob ein Abschnitt von Code ausgeführt wird. Natürlich können wir auch verschiedene Arten von Werten ausgeben. Außerdem:
Seit dem System-Objekt zum Java-Kernobjekt wurde, kann es überall verwendet werden, ohne zusätzliche Klassen zu importieren. Der Anwendungsbereich umfasst Servlets, JSP, RMI, EJB's, Beans, Klassen und standalone Anwendungen.
Im Vergleich zum Anhalten des Laufs an einem Breakpoint hat die Ausgabe mit System.out keinen erheblichen Einfluss auf den Ablauf der Anwendung. Dies ist in Anwendungen mit einem wichtigen Zeitplan sehr nützlich.
Hier ist die Syntax für die Verwendung von System.out.println():
System.out.println("Debugging message");
Dies ist ein einfaches Beispiel für die Verwendung von System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head><title>System.out.println</title></head> <body> <c:forEach var="counter" begin="1" end="10" step="1"> <c:out value="${counter-5"}/></br> <% System.out.println( "counter= " + pageContext.findAttribute("counter") ); %> </c:forEach> </body> </html>
Wenn Sie den obigen Beispielcode ausführen, erhält man wie folgt resultieren:
-4 -3 -2 -1 0 1 2 3 4 5
Wenn Sie den Tomcat-Server verwenden, finden Sie im Verzeichnis logs die Datei stdout.log, in der sich zusätzliche Inhalte wie folgt befinden:
counter=1 counter=2 counter=3 counter=4 counter=5 counter=6 counter=7 counter=8 counter=9 counter=10
Mit diesem Verfahren können Variablen und andere Informationen in das Systemprotokoll ausgegeben werden, um tiefere Ursachen für Probleme zu analysieren und zu finden.
J2Das SE-Logging-Framework bietet für jede im JVM laufende Klasse eine Protokollierungsdienstleistung. Daher können wir dieses Framework nutzen, um jede Information zu protokollieren.
Lassen Sie uns den obigen Code neu schreiben, indem wir das Logger API von JDK verwenden:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page import="java.util.logging.Logger" %> <html> <head><title>Logger.info</title></head> <body> <% Logger logger = Logger.getLogger(this.getClass().getName()); %> <c:forEach var="counter" begin="1" end="10" step="1"> <c:set var="myCount" value="${counter-5"} /> <c:out value="${myCount}"/></br> <% String message = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); logger.info(message); %> </c:forEach> </body> </html>
Sein Laufzeitergebnis ist ähnlich wie das vorherige, aber es kann zusätzliche Informationen in die stdout.log-Datei ausgeben. In diesem Fall haben wir die info-Methode des Loggers verwendet. Hier ist ein Schnappschuss aus der stdout.log-Datei:
24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=1 myCount=-4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=2 myCount=-3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=3 myCount=-2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=4 myCount=-1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=5 myCount=0 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=6 myCount=1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=7 myCount=2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=8 myCount=3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=9 myCount=4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=10 myCount=5
Nachrichten können mit verschiedenen Prioritäten gesendet werden, indem sever(), warning(), info(), config(), fine(), finer(), finest() Methoden verwendet werden. Die finest()-Methode wird verwendet, um die besten Informationen zu protokollieren, während die sever()-Methode die schwersten Informationen protokolliert.
Verwenden Sie Log4Verwenden Sie das J-Framework, um Nachrichten in verschiedene Dateien zu protokollieren, die nach Schweregrad und Wichtigkeit klassifiziert sind.
NetBeans ist eine Baumstruktur und ein offenes Java-Entwicklungsumgebung, die die Entwicklung unabhängiger Java-Anwendungen und Netzwerk-Anwendungen unterstützt und auch das Debuggen von JSP unterstützt.
NetBeans unterstützt folgende grundlegende Debugging-Funktionen:
Breakpoints
Schritt-für-Schritt-Verfolgung
Beobachtungspunkte
Für detaillierte Informationen siehe das NetBeans Handbuch.
Man kann den Befehl jdb im JSP und Servlets verwenden, um zu debuggen, genau wie bei normalen Anwendungen.
Normalerweise debuggen wir den sun.servlet.http.HttpServer-Objekt direkt, um zu sehen, wie der HttpServer JSP ausführt, wenn er HTTP-Anfragen beantwortet./Der Fall der Servlets. Dies ist sehr ähnlich wie das Debuggen von Applets. Der Unterschied liegt darin, dass die tatsächlich debuggte Applet-Programm sun.applet.AppletViewer ist.
Die meisten Debugger können beim Debuggen von Applets automatisch einige Details ignorieren, da sie wissen, wie man Applets debuggt. Wenn Sie den Debugging-Fokus auf JSP lenken möchten, müssen Sie folgende zwei Punkte beachten:
Richten Sie den classpath des Debuggers ein, damit er sun.servlet.http.Http finden kann.-Server und die damit verbundenen Klassen.
Richten Sie den classpath des Debuggers ein, damit er Ihre JSP-Datei und die damit verbundenen Klassen finden kann.
Nachdem Sie den classpath eingerichtet haben, beginnen Sie mit der Debugging von sun.servlet.http.Http-Server 。Sie können an jeder Stelle der JSP-Datei einen Bruchpunkt setzen, sofern Ihnen das gefällt, und indem Sie eine Anfrage an den Server senden, sollten Sie sehen können, dass das Programm an der Bruchstelle angehalten hat.
Kommentare im Programm helfen in vielen Aspekten dabei, das Debugging zu erleichtern. Kommentare können in vielen Bereichen des Debuggings verwendet werden.
JSP verwendet Java-Kommentare. Wenn ein BUG verschwindet, überprüfen Sie bitte das Code, das Sie gerade kommentiert haben, da der Grund oft darin liegt.
Manchmal ist es nützlich, die unbearbeiteten HTTP-Anfragen und Antworten zu überprüfen, wenn JSP nicht wie erwartet läuft. Wenn Sie mit der Struktur von HTTP vertraut sind, können Sie direkt die Anfragen und Antworten beobachten und schauen, was mit diesen Header-Modulen los ist.
Hier geben wir noch zwei kleine Tipps für das Debugging von JSP bekannt:
Verwenden Sie den Browser, um die ursprünglichen Seiteninhalte anzuzeigen, um zu unterscheiden, ob es sich um ein Formatierungsproblem handelt. Diese Option befindet sich in der Ansicht-Menü.
Stellen Sie sicher, dass der Browser keine vorherige Request-Ausgabe während des zwangsweisen Neuladens der Seite einfängt. Falls Sie Netscape Navigator verwenden,drücken Sie Shift-Neu laden;falls Sie IE-Browser verwenden,drücken Sie Shift-Aktualisieren。