English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Débogage JSP

Pour tester/Déboguer un programme JSP ou servlet est toujours aussi difficile. Les programmes JSP et Servlets tendent à impliquer une grande quantité de clients/Les interactions entre serveurs peuvent très bien entraîner des erreurs, et il est difficile de reproduire l'environnement d'erreur.

À suivre, quelques astuces et conseils pour vous aider à déboguer votre programme.

Utilisation de System.out.println()

System.out.println() peut très bien marquer si un segment de code a été exécuté. Bien sûr, nous pouvons également imprimer toutes sortes de valeurs. De plus :

  • 自从System对象成为Java核心对象后,它便可以使用在任何地方而不用引入额外的类。使用范围包括Servlets,JSP,RMI,EJB's,Beans,类和独立应用。

  • 与在断点处停止运行相比,用System.out进行输出不会对应用程序的运行流程造成重大的影响,这个特点在定时机制非常重要的应用程序中就显得非常有用了。

接下来给出了使用System.out.println()的语法:

System.out.println("Debugging message");

这是一个使用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>

现在,如果运行上面的实例的话,它将会产生如下的结果:

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

如果使用的是Tomcat服务器,您就能够在logs目录下的stdout.log文件中发现多出了如下内容:

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

使用这种方法可以将变量和其它信息输出至系统日志中,用来分析并找出造成问题的深层次原因。

使用JDB Logger

J2SE日志框架可为任何运行在JVM中的类提供日志记录服务。因此我们可以利用这个框架来记录任何信息。

让我们来重写以上代码,使用JDK中的 logger API:

<%@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>

Son résultat de fonctionnement est similaire à celui précédent, mais il peut obtenir des informations supplémentaires qui sont exportées dans le fichier stdout.log. Dans ce cas, nous avons utilisé la méthode info du logger. Voici un aperçu 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 les méthodes sever(), warning(), info(), config(), fine(), finer(), finest(). La méthode finest() est utilisée pour enregistrer les meilleures informations, tandis que la méthode sever() est utilisée pour enregistrer les informations les plus graves.

Utilisez Log4Le cadre J pour enregistrer les messages dans différents fichiers, ces messages étant classés en fonction de leur gravité et de leur importance.

Outils de débogage

NetBeans est une structure en arbre, un environnement de développement intégré open source pour Java, 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 fonctionnalités de débogage de base suivantes :

  • Point d'arrêt

  • Pisteur d'étapes

  • Points d'observation

Pour plus d'informations, consultez le manuel d'utilisation de NetBeans.

Utilisez le débogueur JDB

Il est possible d'utiliser la commande jdb pour déboguer les JSP et les servlets, tout comme pour les applications normales.

Généralement, nous débogons directement l'objet sun.servlet.http.HttpServer pour vérifier comment HttpServer exécute le JSP en réponse aux requêtes HTTP/Le cas des Servlets. Cela est très similaire au débogage des applets. La différence réside dans le fait que l'applet programme réellement débogé est sun.applet.AppletViewer.

La plupart des débiteurs peuvent ignorer automatiquement 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 à JSP, vous devez vous préparer à deux points :

  • Configurez le classpath du débogueur pour qu'il puisse trouver sun.servlet.http.Http-Serveur et les classes associées。

  • Configurez le classpath du débogueur pour qu'il puisse trouver vos fichiers JSP et les classes associées.

Après avoir configuré le classpath, débutez le débogage de sun.servlet.http.Http-Serveur 。Vous pouvez définir des points d'arrêt à tout moment dans le fichier JSP, selon votre préférence, puis envoyer une requête au serveur à l'aide du navigateur pour voir le programme s'arrêter à l'endroit où se trouve le point d'arrêt.

Utilisation des commentaires

Les commentaires dans le programme aident dans de nombreux aspects du débogage du programme. Les commentaires peuvent être utilisés dans de nombreux aspects du débogage du programme.

JSP utilise les commentaires Java. Si un BUG disparaît, veuillez examiner attentivement le code que vous avez commenté récemment, car cela pourrait généralement vous aider à trouver la cause.

En-têtes client et serveur

Parfois, lorsque le JSP ne fonctionne pas comme prévu, il est utile de vérifier les requêtes HTTP brutes et les réponses. Si vous êtes familier avec la structure HTTP, vous pouvez directement observer les modules request et response pour voir ce qui ne va pas avec ces en-têtes.

Astuce de débogage importante

Voici deux astuces supplémentaires pour déboguer JSP :

  • Utilisez le navigateur pour afficher le contenu original de la page pour distinguer s'il s'agit d'un problème de format. Cette option se trouve généralement dans le menu Affichage.

  • Assurez-vous que le navigateur n'a pas capturé la sortie de la requête précédente lors du rechargement forcé de la page. Si vous utilisez le navigateur Netscape Navigator, utilisez Shift-Recharger;si vous utilisez le navigateur IE, utilisez Shift-Rafraîchir。