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部分にブレークポイントを設定しようとすると、以下のような警告が表示されます。ご注意ください。
③ Tomcatを起動
Eclipseのツールバー内の「Tomcatの起動」ボタンを押下し、Tomcatを起動します。すでに起動済みの場合はスキップして次へ進んでください。
図 4.3.3: Tomcatの起動
ブレークポイントの設定とTomcatの起動が完了したら、デバッグの準備は完了です。
Step2:デバッグの起動
Eclipseを利用したWebアプリケーションにおいては、ブラウザ画面からWebアプリケーションにアクセスし、ブレークポイントの設定された部分で停止しデバッグを実行します。
① Webブラウザからページヘアクセス
Webブラウザから以下のURLにアクセスします。
http://localhost:8080/web_basic/GuessServlet
Webブラウザからアクセスすると、本来表示されるはずのページが表示されず、ブレークポイントで処理が停止します。次の図のように、タスクバーのEclipseが点滅します。
図 4.3.4: Webアプリケーションへのアクセス
② デバッグ画面の表示
点滅しているEclipseをクリックして表示すると、以下の図のように「パースペクティブ切り替えの確認」ダイアログが表示されます。このまま「切り替え」を選択します。
図 4.3.5: デバッグパースペクティブの切り替え
デバッグ画面が表示されます。
図 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:デバッグの終了
デバッグを終了する場合は、ブレークポイントを解除し再開ボタンを押下することで通常の動作に戻すことができます。
① ブレークポイントの解除
29行目に設定されたブレークポイントを解除します。
図 4.3.16: ブレークポイントの解除
② 再開ボタンを押下
再開ボタンを押下し、停止していたプログラムを通常の動作に戻します。
図 4.3.17: プログラムの再開
③ Webページの表示
再開ボタンを押下した後、Webページを表示します。
図 4.3.18: 判定結果の表示