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

相關文章
相關標籤/搜索