JSP的调试

如下内容引用自http://wiki.jikexueyuan.com/project/jsp/debugging.htmlhtml

1、使用System.out.println()java

System.out.println()在测试中做为一个标记很容易使用,无论某段代码是否被执行。也能够输出变量值。另外:git

  • 因为System对象是Java对象核心的一部分,它能够在任何地方被使用而不须要安装额外的类。这包括Servlets,JSP,RMI,EJB's,ordinary Beans和classes,和独立的应用程序。github

  • 与停在断点相比较,写到System.out中并无对应用程序正常的执行流产生过多的干扰,当时间相当重要时,这使得它很是有价值。

下面是使用System.out.println()的语法:小程序

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

下面是使用System.out.println()的一个简单的例子:浏览器

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

如今若是要试图访问上面的JSP,它将会在浏览器上产生如下的结果:缓存

若是使用的是Tomcat,还将发现这些行会被附加到日志目录里stdout.log文件的末尾。服务器

这样能够把变量和其余信息打印到系统日志中,能够分析找到问题的根本缘由或者其余各类缘由。app

2、使用JDB记录器框架

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

使用JDK记录器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>

这将在浏览器和stdout.log中生成类似的结果,可是会在stdout.log文件中有附加信息。在这里,使用记录器的info方法,由于只是为了信息的目的在记录消息。这是stdout.log文件的一个快照:

能够经过使用方便的函数发送各类级别的消息,如severe(),warning(),info(),config(),fine(),finer()和finest()。这里,finest()方法能够用于记录最好的信息,severe()方法能够用于记录严峻的消息。

可使用Log4J Framework在不一样的文件中根据消息的严重水平和重要性来记录他们。

3、调试工具

Eclipse是一个免费和开源的Java集成开发环境,支持独立的Java应用程序和Web应用程序的开发,支持JSP和Servlet规范,也包括一个JSP调试器。

Eclipse支持如下基本的调试功能:

  • 断点

  • 单步调试

  • 监视点

能够参考Eclipse文档来了解上面的调试功能。

4、使用JDB调试器

可使用用来调试小程序和应用程序相同的jdb命令来调试JSP和Servlets 。

为了调试JSP和Servlets,能够调试sun.servlet.http.HttpServer,而后在来自浏览器的HTTP请求的响应里查看HttpServer正在执行的JSP/Servlets。这和如何调试小程序很是类似。不一样不处是,在小程序里,真正的程序是在sun.applet.AppletViewer里调试的。

大多数调试器经过自动得知如何调试小程序来隐藏这些细节。直到它们对JSP作着一样的操做,必须帮助调试器执行如下操做:

  • 设置调试器的类路径,以便于找到sun.servlet.Http-Server和与其相关的类。

  • 设置调试器的类路径,以便于找到JSP和支持的类,典型的是ROOT\WEB-INF\classes。

一旦已经正确的设置了类路径,开始调试sun.servlet.http.HttpServer。对于一个给定的JSP,能够感兴趣的任何地方设置断点,而后经过一个Web浏览器来发送一个请求到HttpServer (http://localhost:8080/JSPToDebug)。会看到执行设置的断点处中止。

详细参考:http://www.jianshu.com/p/c11ad97d5bec

5、使用注释

代码中的注释能够用不一样的方法帮助调试过程。注释能够用于调试过程的不少其余方面。

JSP使用Java命令和单线(//...)和多线(/*...(/)命令,能够暂时删除Java代码的一部分。若是错误消失,仔细看看代码注释并找出问题所在。

6、客户端和服务器端头文件

有时,当一个JSP表现的不像预期的那样,查看一下原始的HTTP请求和响应是很是有用的。若是熟悉HTTP的结构,能够读取请求和响应,看看那些头文件中究竟是社么信息。

7、重要的调试技巧

这里是一些关于JSP调试的调试技巧:

  • 向浏览器查看它显示的页面的原始内容。这能够帮助识别格式问题。它一般是视图菜单下的一个选项。

  • 确保浏览器不会经过强迫一个彻底加载的页面来缓存先前的请求的输出。在 Internet Explorer,使用Shift-Refresh。(Ctrl+F5)

 

测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test23

相关文章
相关标签/搜索