Latest web development tutorials

Servlet Debugging

Test / débogage développement Servlet du cours est toujours difficile. Servlet implique souvent un grand nombre d'interactions client / serveur, mais peut être difficile de reproduire l'erreur.

Voici quelques conseils et suggestions qui peuvent vous aider à déboguer.

System.out.println ()

System.out.println () est utilisée comme marqueur, utilisé pour vérifier si une partie spécifique du code est exécuté. Nous pouvons également imprimer la valeur de la variable. En outre:

  • Parce que les objets du système font partie des principaux objets Java, il peut être utilisé partout, sans la nécessité d'installer des classes supplémentaires. Cela inclut Servlet, JSP, RMI, EJB, Beans et les classes ordinaires, ainsi que des applications autonomes.
  • Avec différents arrêts au point d'arrêt, écrivez à System.out ne pas interférer avec l'écoulement normal de l'exécution de l'application, ce qui rend le timing est crucial quand il est particulièrement précieux.

Voici la syntaxe à utiliser System.out.println () est:

System.out.println ( "message de débogage");

Tous les messages qui sont générés par la grammaire ci-dessus seront enregistrées dans les fichiers journaux de serveur Web.

Le journal des messages

Utilisez la méthode appropriée de journalisation pour enregistrer tous les debug, messages d'avertissement et d'erreur, ce qui est une très bonne idée, il est recommandé d'utiliser l'enregistrement log4J tous les messages.

API Servlet fournit également un moyen simple de sortie, en utilisant la méthode log (), comme suit:

// Importation bibliothèque import java.io. java nécessaire *;
javax.servlet import * .;
javax.servlet.http import * .;

public class ContextLog étend HttpServlet {
  public void doGet (HttpServletRequest demande, 
      HttpServletResponse réponse) throws ServletException,
         java.io.IOException {
    
      Chaîne par = request.getParameter ( "par1");
      // Appel ServletContext.log deux méthodes ServletContext context = getServletContext ();

      si (par == null || par.equals ( ""))
      // Enregistrement des paramètres par la version Throwable context.log ( "Aucun message reçu:",
          nouveau IllegalStateException ( "Missing paramètre"));
      autre
          context.log ( "Voici le message du visiteur:" + par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter out = response.getWriter ();
      String title = "Contexte Log";
      Chaîne docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<Html> \ n" +
        "<Head> <title>" + titre + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + titre + "</ h1> \ n" +
        "<H2 align = \" center \ "> Messages envoyés </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext il messages texte à Servlet fichier journal du conteneur. Pour Tomcat, ces journaux peuvent être trouvés dans le <Tomcat-installation-directory> répertoire / logs.

Ces fichiers journaux sont en effet émergent des erreurs de fréquence ou de problèmes sont donnés des instructions. En raison de cela, nous vous recommandons d'utiliser le journal () clause fonction exception de capture ne se produit pas souvent.

Utilisez JDB débogueur

Vous pouvez utiliser la commande jdb applet ou l'application de débogage pour déboguer Servlet.

Pour déboguer un Servlet, nous pouvons déboguer sun.servlet.http.HttpServer, puis l'exécuter en tant HttpServer Servlet pour répondre aux requêtes HTTP du côté du navigateur. Ce petit programme de débogage applet est très similaire. Et le débogage applet est différent, le programme réel en cours de débogage est sun.applet.AppletViewer.

La plupart des débogueurs seront masquer automatiquement les détails de la façon de déboguer applet. De même, pour le servlet, vous devez faire ce qui suit à l'aide du débogueur:

  • Réglez classpath classpath de votre débogueur, afin qu'il puisse trouver sun.servlet.http.Http-Server et classes connexes.
  • Réglez classpath classpath de votre débogueur, afin qu'il puisse trouver votre servlet et classes de support, généralement en server_root / servlets et server_root / classes dans.

Vous ne voulez pas habituellement server_root / servlets dans votre classpath, car il désactive recharger servlet. Toutefois, cette règle contient est très utile pour le débogage. Il vous permet de déboguer dans HttpServer Servlet personnalisé chargeur avant Servlet mis un point d'arrêt dans un Servlet.

Si vous avez réglé le classpath classpath correct, vous pouvez commencer le débogage sun.servlet.http.HttpServer. Servlet peut définir des points d'arrêt dans le code que vous souhaitez déboguer, puis donné Servlet en utilisant un navigateur Web (http: // localhost: 8080 / servlet / ServletToDebug) fait une demande à HttpServer. Vous verrez l'exécution du programme s'arrête au point d'arrêt.

Utilisez les commentaires

Les commentaires dans le code vous aideront de diverses manières pour le débogage. Les notes peuvent être utilisés dans de nombreuses autres façons processus de débogage.

L'utilisation des commentaires Java Servlet et commentaires sur une ligne (// ...), multi-lignes (/ * ... * /) peut être utilisée pour supprimer temporairement un peu de code Java. Si le bug disparaît, il vous suffit de regarder le code commenté et identifier le problème.

Renseignements sur le client et en-tête côté serveur

Parfois, quand un Servlet est pas comme prévu, voir la requête HTTP d'origine et la réponse est très utile. Si vous êtes familier avec la configuration HTTP, vous pouvez lire la demande et la réponse et voir quelles informations ces en-têtes.

techniques de débogage importants

Voici quelques conseils de débogage Servlet:

  • S'il vous plaît noter, server_root / classes ne seront pas rechargées, et le server_root / servlets puissance.
  • Il demande au navigateur d'afficher le contenu d'origine de la page qu'il affiche. Ceci permet d'identifier le format de problème. Il est généralement une option dans le menu "Affichage".
  • En forçant une pleine recharger la page pour faire en sorte que le navigateur est pas une demande avant que le tampon de sortie. Dans Netscape Navigator, utilisez Shift-Reload, dans Internet Explorer, utilisez Maj-Refresh.
  • Assurez-vous que init () la méthode de servlet accepte un paramètre ServletConfig et appelle super.init (config).