English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
テストする/JSPやservletプログラムのデバッグは常に難しいです。JSPとServletsプログラムは、多くのクライアントに関連しています。/サーバ間のインタラクションでは、エラーが発生しやすく、再現が難しい環境になることが多いです。
次に、プログラムのデバッグを助けるための小技やアドバイスをいくつかご紹介します。
System.out.println()は、コードが実行されたかどうかを簡単にマークすることができます。もちろん、さまざまな値を出力することもできます。さらに:
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>
その実行結果は前のものと似ていますが、さらに追加の情報を出力してstdout.logファイルに記録できます。ここではloggerのinfoメソッドを使用しました。以下は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
メッセージは、sever()、warning()、info()、config()、fine()、finer()、finest()メソッドを使用して様々な優先度で送信できます。finest()メソッドは最も良い情報を記録し、sever()メソッドは最も深刻な情報を記録します。
ログの使用4メッセージを異なるファイルに記録するためにJフレームワークを使用し、重要度と深刻度に基づいてメッセージを分類します。
NetBeansはツリー構造を持ち、オープンソースのJava統合開発環境で、独立したJavaアプリケーションやネットワークアプリケーションの開発をサポートしており、JSPデバッグもサポートしています。
NetBeansは以下の基本的なデバッグ機能をサポートしています:
ブレークポイント
ステップバイステップの追跡
観察点
詳細については、NetBeansユーザーマニュアルを参照してください。
JSPとServletsでは、通常のアプリケーションと同様にjdbコマンドを使用してデバッグできます。
通常、sun.servlet.http.HttpServerオブジェクトを直接デバッグして、HttpServerがHTTPリクエストに応答する際にJSPを実行しているかを確認します。/Servletsの状況。これはappletsのデバッグと非常に似ています。違いは、実際にデバッグしているのはsun.applet.AppletViewerであることです。
大部分デバッガは、appletsをデバッグする際に自動的に一部の詳細を無視することができます。なぜなら、デバッグ方法を知っているからです。JSPにデバッグオブジェクトを移行するには、以下の2点を準備する必要があります:
デバッグエンジンのclasspathを設定し、sun.servlet.http.Httpを見つけるようにします。-サーバーおよび関連するクラス。
デバッグエンジンのclasspathを設定し、JSPファイルと関連するクラスを見つけるようにします。
classpathを設定した後、sun.servlet.http.Httpをデバッグし始めます。-サーバー。JSPファイルのどこにでもブレークポイントを設定できます。好きな場所で、ブラウザを使用してサーバーにリクエストを送信すると、プログラムがブレークポイントで停止することができます。
プログラムのコメントは、多くの面でプログラムのデバッグに役立ちます。コメントはデバッグプログラムの多くの場面で使用できます。
JSPはJavaコメントを使用します。もしBUGが消えたら、最近コメントをしたコードを詳細に確認してください。通常、原因が見つかります。
時には、JSPが予期せぬ方法で動作しない場合、未加工のHTTPリクエストと応答を確認することも非常に役立ちます。HTTPの構造に詳しい場合は、直接requestとresponseを観察し、これらのヘッダーモジュールが何が問題なのかを見ることができます。
ここで、JSPのデバッグに関する二つの小技を紹介します:
ブラウザを使用してオリジナルのページ内容を表示し、フォーマット問題かどうかを区別するために使用します。このオプションは通常、ビューメニューにあります。
ブラウザがページを強制的に再読み込みする際に、先前的リクエスト出力がキャプチャされていないことを確認してください。Netscape Navigatorブラウザを使用している場合、Shiftを使用します。-再読み込み;IEブラウザを使用している場合、Shiftを使用します。-リフレッシュ。