débogage JSP


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.

Ce qui suit vous donnera quelques conseils et suggestions pour vous aider à déboguer votre programme.


L'utilisation de System.out.println()

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("Debugging message");

Ceci est un exemple simple d'utilisation de 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>

Maintenant, si vous exécutez l'exemple ci-dessus, il produira les résultats suivants :

-4
-3
-2
-1
0
1
2
3
4
5

Si vous utilisez un serveur Tomcat, vous pouvez enregistrer le fichier stdout.log dans le répertoire des journaux. le contenu suivant a été trouvé :

counter=1
counter=2
counter=3
counter=4
counter=5
counter=6
counter=7
counter=8
counter=9
counter=10

En utilisant cette méthode, des variables et d'autres informations peuvent être sorties dans le journal système pour analyser et découvrir les causes sous-jacentes du problème.


Utilisez JDB Logger

Le framework de journalisation J2SE peut fournir des services de journalisation pour n'importe quelle 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" 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>

Le résultat en cours d'exécution est similaire au précédent, cependant, il peut obtenir des informations supplémentaires sur stdout.log in le fichier. Ici, nous utilisons la méthode info dans logger. Ci-dessous, nous donnons un instantané du fichier stdout.log :

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

Les messages peuvent être envoyés avec différentes priorités, en utilisant sever(), warn(), info(), config(), fine() ,finer (), méthode la plus fine (). 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 sérieuses.

Utilisez le framework Log4J pour enregistrer les messages dans différents fichiers, qui sont classés en fonction de leur gravité et de leur importance.


Outil de débogage

NetBeans est une structure arborescente et un environnement de développement Java open source complet. Il 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

  • Points d'observation

Pour des informations détaillées, veuillez consulter le manuel NetBeans.


À l'aide du débogueur JDB

, vous pouvez utiliser les commandes jdb dans les JSP et les servlets pour le débogage, tout comme pour le débogage d'applications ordinaires.

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, commencez à déboguer 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.


Utilisez les commentaires

Les commentaires dans le programme peuvent aider de plusieurs manières à déboguer le programme. Les commentaires peuvent être utilisés dans de nombreux aspects du débogage d’un programme.

JSP utilise les 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.


Modules d'en-tête client et serveur

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.


Compétences de débogage importantes

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 lorsque vous forcez le rechargement d'une page. Si vous utilisez le navigateur Netscape Navigator, utilisez Shift-Reload ; si vous utilisez le navigateur IE, utilisez Shift-Refresh.