Latest web development tutorials

La depuración de servlets

Exámenes / servlet depuración desarrollo del curso es siempre difícil. Servlet a menudo implica un gran número de interacción cliente / servidor, pero puede ser difícil de reproducir el error.

Estos son algunos consejos y sugerencias que pueden ayudarle a depurar.

System.out.println ()

System.out.println () se utiliza como un marcador, que se utiliza para probar si se ejecuta una pieza específica de código. También podemos imprimir el valor de la variable. Además:

  • Dado que los objetos del sistema son parte de los principales objetos de Java, que puede ser utilizado en cualquier lugar sin la necesidad de instalar las clases adicionales. Esto incluye Servlet, JSP, RMI, EJB, frijoles y las clases comunes, así como aplicaciones independientes.
  • Con diferentes paradas en el punto de interrupción, escriba a System.out no interfiere con el flujo normal de ejecución de la aplicación, lo que hace que el momento es crucial cuando se tiene un valor especial.

A continuación se muestra la sintaxis para utilizar System.out.println () es:

System.out.println ( "mensaje de depuración");

Todos los mensajes que se generan por la gramática anterior serán registrados en los archivos de registro del servidor Web.

El registro de mensajes

Utilice el método adecuado para el registro para registrar toda la depuración, de alerta y mensajes de error, que es una idea muy buena, se recomienda el uso de registro de todos los mensajes log4j.

API Servlet también proporciona una forma sencilla de la producción, utilizando el método log (), como sigue:

// Importar necesario java biblioteca de importación java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;

clase pública se extiende ContextLog HttpServlet {
  pública doGet vacío (solicitud de HttpServletRequest, 
      HttpServletResponse respuesta) lanza ServletException,
         java.io.IOException {
    
      Cadena nominal = request.getParameter ( "par1");
      // Llamar ServletContext.log dos métodos ServletContext contexto = getServletContext ();

      si (par == null || par.equals ( ""))
      // Conjunto de parámetros según la versión Throwable context.log ( "No hay ningún mensaje recibido:",
          nueva IllegalStateException ( "Falta el parámetro"));
      otro
          context.log ( "Aquí es el mensaje de los visitantes:" + par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter cabo response.getWriter = ();
      String title = "Contexto de registro";
      Doctype Cadena = "\ n <HTML! DOCTYPE>";
      out.println (+ docType
        "<Html> \ n" +
        "<Head> <title>" + + título "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" centro \ ">" + + título "</ h1> \ n" +
        "<H2 align = \" centro \ "> Los mensajes enviados </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext que los mensajes de texto al archivo de registro de servlet contenedor. Para Tomcat, estos registros se pueden encontrar en la <Tomcat-instalación-directorio> / directorio de registros.

Estos archivos de registro son, en efecto surgiendo errores de frecuencia o los problemas se dan instrucciones. Debido a esto, se recomienda utilizar la cláusula catch función excepción log () no suele suceder.

Utilizar JDB depurador

Puede utilizar el comando applet o la depuración de aplicaciones jdb al servlet de depuración.

Para depurar un servlet, podemos depurar sun.servlet.http.HttpServer y, a continuación, ejecutarlo como HttpServer servlet para responder a las peticiones HTTP del lado del navegador. Este pequeño programa de depuración applet es muy similar. Y applet de depuración es diferente, en realidad el programa que se está depurando es sun.applet.AppletViewer.

La mayoría de los depuradores ocultar automáticamente los detalles de cómo depurar applets. Del mismo modo, para el servlet, debe hacer lo siguiente con la ayuda del depurador:

  • Establecer ruta de clases de su ruta de clase depurador, para que pueda encontrar sun.servlet.http.Http-Server y clases relacionadas.
  • Establecer ruta de clases de su ruta de clase depurador, para que pueda encontrar su servlet y clases de apoyo, por lo general en server_root / servlets y server_root / clases en.

Por lo general no quiere server_root / servlets en la ruta de clases, ya que deshabilita recargar servlet. Sin embargo, esta regla contiene es muy útil para la depuración. Se le permitirá depurar en HttpServer cargador de servlet personalizado antes de servlet establece un punto de interrupción en un servlet.

Si ha establecido la ruta de clase ruta de clase correcta, puede iniciar la depuración sun.servlet.http.HttpServer. Servlet puede establecer puntos de interrupción en el código que desea depurar, y luego se da servlet mediante un navegador web (http: // localhost: 8080 / servlet / ServletToDebug) hace una petición a HttpServer. Verá la ejecución del programa se detiene en el punto de interrupción.

utilice comentarios

Los comentarios en el código ayudarán en diferentes formas, para la depuración. Las notas pueden ser utilizados en muchas otras maneras proceso de depuración.

El uso de los comentarios de Java Servlet y comentarios de una sola línea (// ...), los comentarios de varias líneas (/ * ... * /) se puede utilizar para eliminar temporalmente algo de código Java. Si el error desaparece, sólo se observa en el código comentado e identificar el problema.

La información del cliente y la cabecera del lado del servidor

A veces, cuando un servlet no es el esperado, ver la solicitud HTTP original y la respuesta es muy útil. Si no está familiarizado con la configuración de HTTP, se puede leer la solicitud y la respuesta y ver la información que estas cabeceras.

importantes técnicas de depuración

Éstos son algunos consejos de depuración de servlets:

  • Tenga en cuenta, server_root / clases no se volverá a cargar, y el server_root / servlets fuerzas.
  • Se pide al navegador que muestre el contenido original de la página que muestra. Esto ayuda a identificar el formato de problema. Por lo general, es una opción en el menú "Ver".
  • Al forzar a un completo recargar la página para asegurarse de que el navegador no es una petición antes de que la memoria intermedia de salida. En Netscape Navigator, utilice Shift-Reload, en Internet Explorer, el uso Shift-Actualizar.
  • Asegúrese de que el método del servlet init () acepta un parámetro ServletConfig y llama super.init (config).