English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Para probar/Depurar un programa JSP o servlet siempre es tan difícil. Los programas JSP y Servlets tienden a involucrar una gran cantidad de clientes/La interacción entre servidores, lo que muy probablemente puede generar errores y es difícil reproducir el entorno de error.
A continuación, se proporcionarán algunos consejos y trucos para ayudarle a depurar programas.
System.out.println() puede marcar fácilmente si un segmento de código se ha ejecutado. Por supuesto, también podemos imprimir varios tipos de valores. Además:
自从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
使用这种方法可以将变量和其他信息输出至系统日志中,用来分析并找出造成问题的深层次原因。
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>
Sus resultados de ejecución son similares a los anteriores, pero puede obtener información adicional que se escribe en el archivo stdout.log. Aquí usamos el método info del logger. A continuación, presentamos una instantánea del archivo 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
Los mensajes se pueden enviar con diferentes niveles de prioridad, utilizando los métodos sever(), warning(), info(), config(), fine(), finer(), finest(). El método finest() se utiliza para registrar la mejor información, mientras que el método sever() se utiliza para registrar la información más grave.
Usar Log4El marco J se utiliza para registrar mensajes en diferentes archivos, estos mensajes se clasifican según su gravedad e importancia.
NetBeans es una estructura en forma de árbol, un entorno de desarrollo integrado de Java de código abierto, que admite el desarrollo de aplicaciones Java independientes y aplicaciones de red, y también admite la depuración de JSP.
NetBeans admite las siguientes funciones básicas de depuración:
Puntos de interrupción
Rastreo paso a paso
Puntos de observación
Para obtener información más detallada, consulte el manual de uso de NetBeans.
Se puede usar el comando jdb para depurar JSP y servlets, al igual que depurar aplicaciones normales.
Por lo general, depuramos directamente el objeto sun.servlet.http.HttpServer para ver cómo ejecuta HttpServer la solicitud HTTP en JSP/La situación de Servlets. Esto es muy similar al depuración de applets. La diferencia radica en que el programa de applets realmente depura es sun.applet.AppletViewer.
La mayoría de los depuradores pueden ignorar automáticamente algunos detalles al depurar applets, ya que saben cómo depurarlos. Si desea transferir el objeto de depuración a JSP, debe preparar los siguientes dos puntos:
Configurar el classpath del depurador para que pueda encontrar sun.servlet.http.Http-Server y clases relacionadas.
Configurar el classpath del depurador para que pueda encontrar sus archivos JSP y clases relacionadas.
Comience a depurar sun.servlet.http.Http después de configurar el classpath-Server 。Puede establecer puntos de interrupción en cualquier lugar del archivo JSP, siempre que le guste, y luego enviar una solicitud al servidor usando el navegador para que pueda ver que el programa se detiene en el punto de interrupción.
Los comentarios en el programa ayudan en muchos aspectos a la depuración del programa. Los comentarios se pueden usar en muchos aspectos de la depuración del programa.
JSP utiliza comentarios Java. Si un BUG desaparece, revise detalladamente el código que recién comentó, generalmente puede encontrar la causa.
A veces, cuando JSP no se ejecuta de la manera prevista, también es útil ver las solicitudes HTTP y respuestas no procesadas. Si está familiarizado con la estructura de HTTP, puede observar directamente request y response y ver qué está mal con estos módulos de encabezado.
Aquí revelamos dos trucos pequeños para depurar JSP:
Use el navegador para mostrar el contenido original de la página, para distinguir si es un problema de formato. Esta opción generalmente se encuentra en el menú Ver.
Asegúrese de que el navegador no capture la salida anterior del request al recargar la página forzadamente. Si usa el navegador Netscape Navigator, use Shift-Recargar;si usa el navegador IE,use Shift-Refrescar。