Siempre es difícil probar/depurar un programa JSP o servlet. Los programas JSP y Servlets tienden a involucrar mucha interacción cliente/servidor, lo que es muy probable que cause errores y es difícil reproducir el entorno de errores.
A continuación, le daremos algunos consejos y sugerencias para ayudarle a depurar su programa.
System.out.println() puede marcar fácilmente si se ha ejecutado un fragmento de código. Por supuesto, también podemos imprimir varios valores. también:
Dado que el objeto System se convirtió en un objeto central de Java, se puede utilizar en cualquier lugar sin introducir clases adicionales. El alcance de uso incluye Servlets, JSP, RMI, EJB, Beans, clases y aplicaciones independientes.
En comparación con detener la ejecución en un punto de interrupción, usar System.out para generar no tendrá un impacto significativo en el proceso de ejecución de la aplicación. Esta característica es muy útil en aplicaciones donde el mecanismo de sincronización es muy importante.
La sintaxis para usar System.out.println() se proporciona a continuación:
System.out.println("Mensaje de depuración");Aquí hay un ejemplo simple usando System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head><title>System.out.println</title></ cabeza><cuerpo><c:forEach var="counter" begin="1" end="10" step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "contador= " + pageContext.findAttribute("contador") ); %></c:forEach></body></html>);Ahora, si ejecuta el ejemplo anterior, producirá los siguientes resultados:
-4-3-2-1012345Si está utilizando un servidor Tomcat, podrá encontrar el siguiente contenido adicional en el archivo stdout.log en el directorio de registros:
contador=1 contador=2 contador=3 contador=4 contador=5 contador=6 contador=7 contador=8 contador=9 contador=10Con este método, se pueden enviar variables y otra información al registro del sistema para su análisis y búsqueda de la causa subyacente del problema.
El marco de registro J2SE proporciona servicios de registro para cualquier clase que se ejecute en la JVM. Entonces podemos usar este marco para registrar cualquier información.
Reescribamos el código anterior para usar la API del registrador en el 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 " comenzar="1" end="10" paso="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/ ></br> <% Mensaje de cadena = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); logger.info( mensaje ); :paraCada></body></html>Los resultados son similares al anterior, sin embargo, puede generar información adicional en el archivo stdout.log. Aquí utilizamos el método de información en el registrador. A continuación ofrecemos una instantánea del archivo stdout.log:
24 de septiembre de 2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=1 myCount=-424-septiembre-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=2 myCount=- 324-septiembre-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=3 myCount=-224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=4 myCount=-124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=5 myCount=024-sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=6 myCount=124-sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador= 7myCount=224-septiembre-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=8 myCount=324-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=9 myCount=424-Sep-2013 23: 31:31 org.apache.jsp.main_jsp _jspServiceINFO: contador=10 myCount=5Los mensajes se pueden enviar con varias prioridades, utilizando los métodos sever(), advertencia(), info(), config(), fine(), finer() y fine(). El método fine() se utiliza para registrar la mejor información y el método Sever() se utiliza para registrar la información más grave.
Utilice el marco Log4J para registrar mensajes en diferentes archivos, que se clasifican según su gravedad e importancia.
NetBeans es una estructura de árbol y un entorno de desarrollo integral Java de código abierto que admite el desarrollo de aplicaciones Java independientes y aplicaciones de red, y también admite la depuración JSP.
NetBeans admite las siguientes funciones básicas de depuración:
punto de interrupción
Seguimiento de un solo paso
punto de observación
Puede encontrar información detallada en el manual de NetBeans.
Puede utilizar comandos jdb en JSP y servlets para depurar como aplicaciones normales.
Por lo general, depuramos el objeto sun.servlet.http.HttpServer directamente para ver cómo HttpServer ejecuta JSP/Servlets en respuesta a solicitudes HTTP. Esto es muy similar a la depuración de subprogramas. La diferencia es que lo que el programa subprograma realmente depura es sun.applet.AppletViewer.
La mayoría de los depuradores pueden ignorar automáticamente algunos detalles al depurar subprogramas porque saben cómo depurarlos. Si desea transferir el objeto de depuración a JSP, debe hacer las dos cosas siguientes:
Configure la ruta de clases del depurador para que pueda encontrar sun.servlet.http.Http-Server y clases relacionadas.
Configure la ruta de clase del depurador para que pueda encontrar sus archivos JSP y clases relacionadas.
Después de configurar el classpath, comience a depurar sun.servlet.http.Http-Server. Puede establecer un punto de interrupción en cualquier parte del archivo JSP como desee y luego usar el navegador para enviar una solicitud al servidor y debería ver que el programa se detiene en el punto de interrupción.
Los comentarios en el programa juegan un papel determinado en la depuración del programa de muchas maneras. Los comentarios se pueden utilizar en muchos aspectos de la depuración de un programa.
JSP utiliza anotaciones de Java. Si un error desaparece, observe más de cerca el código que acaba de comentar y, por lo general, podrá descubrir el motivo.
A veces también resulta útil ver las solicitudes y respuestas HTTP sin procesar cuando el JSP no se comporta según lo previsto. Si está familiarizado con la estructura de HTTP, puede observar directamente la solicitud y la respuesta y ver qué sucede con estos módulos de encabezado.
Aquí revelamos dos consejos más para depurar JSP:
Utilice un navegador para mostrar el contenido de la página original y distinguir si hay un problema de formato. Esta opción suele estar en el menú Ver.
Asegúrese de que el navegador no capture el resultado de la solicitud anterior al forzar la recarga de la página. Si está utilizando el navegador Netscape Navigator, utilice Shift-Reload; si está utilizando el navegador IE, utilice Shift-Refresh.