Il est toujours difficile de tester/déboguer un programme JSP ou servlet. Les programmes JSP et Servlets ont tendance à impliquer de nombreuses interactions client/serveur, ce qui est très susceptible de provoquer des erreurs, et il est difficile de reproduire l'environnement d'erreur.
Ensuite, nous donnerons quelques conseils et suggestions pour vous aider à déboguer votre programme.
System.out.println() peut facilement marquer si un morceau de code a été exécuté. Bien entendu, nous pouvons également imprimer diverses valeurs. aussi:
Depuis que l'objet System est devenu un objet Java principal, il peut être utilisé n'importe où sans introduire de classes supplémentaires. Le champ d'utilisation comprend les servlets, JSP, RMI, EJB, Beans, classes et applications autonomes.
Par rapport à l'arrêt de l'exécution à un point d'arrêt, l'utilisation de System.out pour générer la sortie n'aura pas d'impact significatif sur le processus d'exécution de l'application. Cette fonctionnalité est très utile dans les applications où le mécanisme de synchronisation est très important.
La syntaxe d'utilisation de System.out.println() est donnée ci-dessous :
System.out.println("Message de débogage");Voici un exemple simple utilisant 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" start="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "counter= " + pageContext.findAttribute("counter") ); %></c:forEach></body></html>Maintenant, si vous exécutez l’exemple ci-dessus, il produira les résultats suivants :
-4-3-2-1012345Si vous utilisez un serveur Tomcat, vous pourrez trouver le contenu supplémentaire suivant dans le fichier stdout.log du répertoire des journaux :
compteur=1compteur=2compteur=3compteur=4compteur=5compteur=6compteur=7compteur=8compteur=9compteur=10Grâce à cette méthode, des variables et d'autres informations peuvent être sorties dans le journal système pour analyse et recherche de la cause sous-jacente du problème.
L'infrastructure de journalisation J2SE fournit des services de journalisation pour toute classe exécutée dans la JVM. Nous pouvons donc utiliser ce cadre pour enregistrer n'importe quelle information.
Réécrivons le code ci-dessus pour utiliser l'API logger dans le JDK :
<%@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 " start="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"); :forEach></body></html>Les résultats sont similaires au précédent, cependant, il peut générer des informations supplémentaires dans le fichier stdout.log. Ici, nous utilisons la méthode info dans logger. Ci-dessous, nous donnons un instantané du fichier stdout.log :
24 septembre 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=1 myCount=-424-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=2 myCount=- 324 septembre 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=3 myCount=-224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=4 myCount=-124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=5 myCount=024-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=6 myCount=124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter= 7myCount=224 septembre 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=8 myCount=324-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO : counter=9 myCount=424-Sep-2013 23 : 31:31 org.apache.jsp.main_jsp _jspServiceINFO : compteur=10 monCompte=5Les messages peuvent être envoyés avec différentes priorités, en utilisant les méthodes sever(), warn(), info(), config(), fine(), finer() et finer(). La méthode fine() est utilisée pour enregistrer les meilleures informations et la méthode sever() est utilisée pour enregistrer les informations les plus graves.
Utilisez le framework Log4J pour enregistrer les messages dans différents fichiers, classés en fonction de leur gravité et de leur importance.
NetBeans est une structure arborescente et un environnement de développement Java open source complet qui prend en charge le développement d'applications Java indépendantes et d'applications réseau, et prend également en charge le débogage JSP.
NetBeans prend en charge les fonctions de débogage de base suivantes :
point d'arrêt
Suivi en une seule étape
point d'observation
Des informations détaillées peuvent être trouvées dans le manuel NetBeans.
Vous pouvez utiliser les commandes jdb dans les JSP et les servlets pour déboguer comme les applications normales.
Habituellement, nous débogueons directement l'objet sun.servlet.http.HttpServer pour voir comment HttpServer exécute JSP/Servlets en réponse aux requêtes HTTP. Ceci est très similaire aux applets de débogage. La différence est que ce que le programme applet débogue réellement est sun.applet.AppletViewer.
La plupart des débogueurs peuvent automatiquement ignorer certains détails lors du débogage des applets, car ils savent comment déboguer les applets. Si vous souhaitez transférer l'objet de débogage vers JSP, vous devez effectuer les deux choses suivantes :
Définissez le chemin de classe du débogueur afin qu'il puisse trouver sun.servlet.http.Http-Server et les classes associées.
Définissez le chemin de classe du débogueur afin qu'il puisse trouver vos fichiers JSP et les classes associées.
Après avoir défini le chemin de classe, démarrez le débogage de sun.servlet.http.Http-Server. Vous pouvez définir un point d'arrêt n'importe où dans le fichier JSP à votre guise, puis utiliser le navigateur pour envoyer une requête au serveur et vous devriez voir le programme s'arrêter au point d'arrêt.
Les commentaires dans le programme jouent un certain rôle dans le débogage du programme de plusieurs manières. Les commentaires peuvent être utilisés dans de nombreux aspects du débogage d’un programme.
JSP utilise des annotations Java. Si un bug disparaît, examinez de plus près le code que vous venez de commenter et vous pourrez généralement découvrir pourquoi.
Parfois, il est également utile d'afficher les requêtes et réponses HTTP brutes lorsque le JSP ne se comporte pas comme prévu. Si vous connaissez la structure de HTTP, vous pouvez observer directement la requête et la réponse et voir ce qui se passe avec ces modules d'en-tête.
Nous révélons ici deux autres conseils pour déboguer JSP :
Utilisez un navigateur pour afficher le contenu de la page d'origine afin de distinguer s'il existe un problème de format. Cette option se trouve généralement dans le menu Affichage.
Assurez-vous que le navigateur ne capture pas le résultat de la requête précédente lors du rechargement forcé de la page. Si vous utilisez le navigateur Netscape Navigator, utilisez Shift-Reload ; si vous utilisez le navigateur IE, utilisez Shift-Refresh.