JSPのデバッグ
4.3 JSPのデバッグ
本節では、以下の手順でJSPのデバッグについて解説していきます。JSPのデバッグでも、プログラム全体の流れを管理する変数cmdの値がどのようになっているかを確認しながら、プログラムの動きを見ていくことにします。基本的な流れはサーブレットと同じですが、ブレークポイントの設定可能な位置などで若干異なる部分がありますのでご注意ください。
Step1:デバッグの準備
Step2:デバッグの起動
Step3:変数のデータの確認
Step4:デバッグの終了
Step1:デバッグの準備
JSPのデバッグを行う場合も、サーブレットのデバッグと同様に、はじめにブレークポイントを設定します。また、Tomcatも起動している必要があります。
① ブレークポイントを設定するJSPを開く
Eclipseのパッケージエクスプローラからデバッグを行うプログラムをクリックし、エディタビューを表示します。
[web_basic]→[view]→[ch04]→[guess.jsp]
図 4.3.1: デバッグ対象のJSPを表示
② ブレークポイントを設定する
今回は27行目にブレークポイントを設定します。
図 4.3.2: JSPにブレークポイントを設定
JSPのブレークポイントJSPでは、Javaプログラムの記述がある行のみブレークポイントを設定することができます。Javaの記述がないHTML部分にブレークポイントを設定しようとすると、以下のようにブックマーク追加のポップアップが表示されます。ブックマークはソースコードの目印として使う機能で、デバッグには関係ありませんので、ご注意ください。
ブレークポイントの設定が完了したら、デバッグの準備は完了です。
Step2:デバッグの起動
Eclipseを利用したWebアプリケーションのデバッグでは、「デバッグ」ボタンからTomcatとWebアプリケーションを起動することで、ブレークポイントの設定された箇所で停止しデバッグを実行することができます。
① Tomcatの起動とページへのアクセス
Eclipseのツールバー内の「デバッグ」ボタンを押下しWebアプリケーション(GuessServlet)を起動します。
図 4.3.3: Tomcatの起動
以下の図のように「デバッグモードで表示するかどうか」ダイアログが表示されます。「はい」を選択します。
図 4.3.4: デバッグパースペクティブの切り替え
デバッグモードで起動するとブラウザで以下のURLにアクセスしようとします。
http://localhost:8080/web_basic/GuessServlet
しかし、本来表示されるはずのページが表示されずに処理が停止します。以下の図のようにタスクバーのEclipseが点滅します。
図 4.3.5: Webアプリケーションへのアクセス
② デバッグ画面の表示
点滅しているEclipseをクリックして表示すると、ブレークポイントの箇所で処理が止まっていることが確認できます。
ここで右側のタブを選んで、デバッグ用のパースペクティブを表示します。
図 4.3.6: デバッグ画面の表示
Step3:変数のデータとプログラムの動きの確認
デバッグ画面が表示されたら、通常のJavaプログラムと同様に、変数ビューから変数データの確認やステップオーバーを利用してプログラムの流れを確認します。変数cmdの値がどのようになっているかを確認し、プログラムの動きを見てみましょう。
① 停止位置の確認
デバッグを起動した直後の状態では27行目が実行される直前で停止しています。
図 4.3.7: JSPの停止位置の確認
② 変数cmdの値の確認
この状態で変数cmdの値を確認すると「first」となっていることが確認できます。
図 4.3.8: 変数cmdの値の確認
③ プログラムの動きの確認
ステップオーバーを利用して実行すると27行目のif文の条件には当てはまらないので、39行目のelseブロック内の処理を行ないます。
図 4.3.9: ステップオーバー実行後の停止位置
④ 再開ボタンを押下しWeb画面を表示
再開ボタンを押下し、停止していたプログラムを動作させます。
図 4.3.10: プログラムの再開
27行目以外にはブレークポイントがないため、再開ボタンを押下することでWebページが表示されます。
図 4.3.11: 入力画面の表示
⑤ 数字を入力し送信ボタンを押下
テキストボックスに数字を入力し、送信ボタンをクリックすると、データを送信した状態でのデバッグを行うことができます。
図 4.3.12: 数字の入力とデバッグの起動
⑥ 停止位置の確認
数字を入力し送信ボタンを押下すると、再度ブレークポイントでプログラムが停止します。
図 4.3.13: JSPの停止位置の確認認
⑦ 変数cmdの値の確認
以下の図は、入力された数字が正解だった場合の変数cmdの値です。変数cmdの値が「end」となっていることが確認できます。なお、外れた場合はcmdの値は「game」となります。
図 4.3.14: 変数cmdの値の確認
⑧ プログラムの動きの確認
変数cmdの値が「end」の場合、27行目のif文の条件に一致します。そのため、ステップオーバーを利用して実行するとifブロック内の処理が実行されます。
図 4.3.15: ステップオーバー実行後の停止位置
このように、JSPでもサーブレットと同様に変数の値や、処理の流れを確認することが可能です。ただし、ブレークポイントが設定できない点は注意が必要です。
Step4:デバッグの終了
デバッグを終了する場合は、ブレークポイントを解除し再開ボタンを押下することで通常の動作に戻すことができます。
① ブレークポイントの解除
27行目に設定されたブレークポイントを解除します。
図 4.3.16: ブレークポイントの解除
② 再開ボタンを押下
再開ボタンを押下し、停止していたプログラムを通常の動作に戻します。
図 4.3.17: プログラムの再開
③ Webページの表示
再開ボタンを押下した後、Webページを表示します。
図 4.3.18: 判定結果の表示