
サーブレット&JSPの基本|サーブレットの変更を反映する方法
サーブレットを直したのに画面が変わらない。そんなときは再起動とリロードの仕組みを確認しよう
サーブレットの学習を進めていると、ソースコードを変更したのにブラウザの表示が変わらない、という場面に出会うことがあります。
たとえば、表示する文章を少し変えたはずなのに、ブラウザを更新しても前の内容が表示されたままになることがあります。HTMLファイルであれば、保存してブラウザを更新すればすぐ反映されることが多いですが、サーブレットクラスでは必ずしも同じようには動きません。
これは、サーブレットがJavaのクラスとしてコンパイルされ、Tomcat上でインスタンス化されて実行される仕組みと関係しています。現時点では細かい内部構造まで深く理解しなくても大丈夫ですが、変更が反映されないときの基本的な対処方法は早めに覚えておくと安心です。
この記事では、studyプロジェクト内のサーブレットを変更したときに、実行結果へ反映させる方法を解説します。特に大切なのは、Tomcat11(Java25)を再起動する方法と、オートリロード機能によって変更が反映される場合の確認方法です。
サーブレットを変更しても画面が変わらないことがある
サーブレットクラスは、ブラウザからリクエストされたときにTomcat上で実行されます。
このとき実際に動いているのは、Javaのソースファイルそのものではありません。Eclipseで保存されたサーブレットクラスはコンパイルされ、Tomcat上で読み込まれて実行されます。
そのため、ソースコードを変更して保存したあとでも、Tomcatが古い状態のサーブレットを使い続けていると、ブラウザの表示が変わらないことがあります。
HTMLファイルとサーブレットの反映の違い
| 対象 | 変更後の反映 |
|---|---|
| HTMLファイル | 保存してブラウザを更新すると反映されやすい |
| サーブレットクラス | 保存だけでは反映されないことがある |
| サーブレットクラス | Tomcatの再起動や再読み込みが必要になることがある |
サーブレットはJavaプログラムなので、単なるHTMLファイルよりも実行までの仕組みが複雑です。
ソースコードを変更したのにブラウザが変わらない場合は、入力ミスだけでなく、Tomcat側に変更がまだ反映されていない可能性も考えましょう。
表示内容を変更する例
ここでは、プロフィールを表示するサーブレットを例にします。
最初は、開発者の名前と紹介文をHTMLとして出力しています。そのあと、紹介文だけを変更したとします。
プロフィール表示サーブレットの一部の例
String name = "青山 直人";
// HTMLをレスポンス
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<meta charset=\"UTF-8\" />");
out.println("<title>" + name + "のプロフィール</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>" + name + "は、Javaの学習を毎日コツコツ進めています。</p>");
out.println("</body>");
out.println("</html>");このサーブレットを実行すると、ブラウザには次のような内容が表示されます。
青山 直人は、Javaの学習を毎日コツコツ進めています。
ここで、表示する文章を次のように変更したとします。
out.println("" + name + "は、サーブレットの仕組みを確認しています。");
このようにソースコードを変更して保存したあと、ブラウザを更新しても前の文章が表示されることがあります。
この場合、ソースコードの変更が間違っているとは限りません。Tomcatが変更後のサーブレットをまだ読み込んでいない可能性があります。
図1:サーブレットを変更しても表示が変わらない例

この図から分かること
Eclipseでサーブレットのソースコードを変更しても、ブラウザの表示がすぐに変わらないことがあります。
これは、ブラウザが間違っているというより、Tomcatが変更前のサーブレットを使い続けている可能性があるためです。
サーブレットは、Javaのソースコードを保存して終わりではありません。Eclipseでコンパイルされ、Tomcatに読み込まれ、Tomcat上で実行されます。そのため、変更を反映するにはTomcat側の状態も確認する必要があります。
変更が反映されないときの基本的な考え方
サーブレットの変更が反映されないときは、まず次の流れを思い出しましょう。
| 流れ | 内容 |
|---|---|
| 1 | Eclipseでサーブレットクラスを編集する |
| 2 | 上書き保存する |
| 3 | Eclipseが自動でコンパイルする |
| 4 | Tomcatが変更後のクラスを読み込む |
| 5 | ブラウザからリクエストする |
| 6 | 変更後の処理結果が表示される |
この流れのどこかで止まっていると、ブラウザには古い内容が表示されることがあります。
たとえば、保存していなければ変更は反映されません。コンパイルエラーがあれば、変更後のクラスファイルが正しく作られません。Tomcatが変更後のクラスを読み込んでいなければ、古い処理が実行されることがあります。
そのため、画面が変わらない場合は、ブラウザだけを何度も更新するのではなく、EclipseとTomcatの状態を確認することが大切です。
対処方法① サーバーを再起動する
サーブレットの変更を確実に反映したい場合は、Tomcatを再起動します。
サーバーを再起動すると、TomcatがWebアプリケーションを読み込み直します。そのため、変更後のサーブレットクラスが実行結果に反映されやすくなります。
Eclipseでは、サーバー ビューからTomcat11(Java25)を操作できます。
Tomcatを手動で操作する方法
| 操作 | 内容 |
|---|---|
| 開始 | 停止しているTomcatを起動する |
| 停止 | 起動中のTomcatを停止する |
| 再開 | Tomcatを停止してから起動し直す |
操作手順は次のとおりです。
| 手順 | 操作 |
|---|---|
| 1 | Eclipseのサーバー ビューを開く |
| 2 | Tomcat11(Java25)を選択する |
| 3 | 右クリックする |
| 4 | 開始、停止、再開のいずれかを選択する |
サーブレットの変更を反映したい場合は、基本的に再開を選びます。再開は、停止してから開始する操作です。
ただし、停止と再開はTomcatが起動している状態で選択できます。Tomcatが停止している場合は、開始を選びます。
再開する場合
Tomcat11(Java25)を右クリックし、「再開」を選択します。

再起動すると変更が反映されやすい理由
Tomcatは、サーブレットクラスを読み込んで実行します。すでに読み込まれているサーブレットがある場合、ソースコードを変更しただけでは古い状態が残ることがあります。
再起動すると、Tomcatはいったん停止し、再び起動するときにWebアプリケーションを読み込み直します。その結果、変更後のサーブレットクラスが使われるようになります。
| 状態 | 起こりやすいこと |
|---|---|
| Tomcatを再起動していない | 古いサーブレットが動き続けることがある |
| Tomcatを再起動した | 変更後のサーブレットが読み込まれやすい |
学習中に、変更したはずなのに表示が変わらないと感じたら、まずTomcatの再開を試すとよいでしょう。
サーブレットの変更反映で迷ったときの基本対応として、サーバーの再起動を覚えておくと安心です。
Eclipseの実行機能で再起動を促される場合
Eclipseのサーバーで実行を使うと、サーバーの再起動が必要な場面で確認ダイアログが表示されることがあります。
このダイアログが表示された場合、OKをクリックすると、EclipseがTomcatの再起動とリクエストの実行をまとめて行ってくれます。
つまり、手作業で停止と開始を行わなくても、Eclipseの実行機能によって変更を反映しやすい状態にできます。
ダイアログが表示されたときの流れ
| 手順 | 内容 |
|---|---|
| 1 | サーバーで実行を選択する |
| 2 | 再起動が必要な場合に確認ダイアログが表示される |
| 3 | OKをクリックする |
| 4 | EclipseがTomcatを再起動する |
| 5 | 再起動後にリクエストが実行される |
| 6 | ブラウザに変更後の結果が表示される |
サーブレットの変更を確実に反映したい場合は、この確認ダイアログでOKを選ぶと分かりやすいです。
図2:Tomcatを再起動して変更を反映する

この図から分かること
サーブレットの変更がブラウザに反映されない場合は、Tomcat11(Java25)を再起動することで反映できることがあります。
Eclipseのサーバー ビューでは、Tomcatに対して開始、停止、再開を選択できます。起動中のTomcatに対して再開を選ぶと、停止してから再び開始するため、サーブレットクラスが読み込まれ直します。
その結果、変更後のProfileServlet.javaの内容がブラウザに表示されるようになります。サーブレットを変更したあとに動作が変わらない場合は、Tomcatの再起動を基本的な対処方法として覚えておきましょう。
対処方法② しばらく待つ
もう一つの対処方法は、サーブレットクラスを保存したあと、しばらく待つことです。
Apache Tomcatには、オートリロードという機能があります。オートリロードが有効になっている場合、サーブレットクラスを変更して保存したあと、Tomcatが自動的にWebアプリケーションを再読み込みしてくれることがあります。
この再読み込みが完了すると、Eclipse画面下部のコンソール ビューに、次のような内容が表示されます。
情報:このコンテキストの再ロードが完了しました
このメッセージが表示されていれば、TomcatがWebアプリケーションを読み込み直したことが分かります。つまり、サーブレットクラスの変更が反映されている可能性が高い状態です。
オートリロードで確認する場所
オートリロードによる反映を確認するときは、Eclipseのコンソール ビューを見ます。
保存した直後にブラウザを更新しても反映されない場合があります。Tomcatが再読み込みを完了するまで少し時間がかかることがあるためです。
オートリロード時の確認ポイント
| 確認項目 | 内容 |
|---|---|
| ファイル保存 | サーブレットクラスを上書き保存したか |
| コンソール ビュー | 再ロード完了のメッセージが出ているか |
| Tomcatの状態 | 起動済みになっているか |
| ブラウザ更新 | 再ロード完了後に更新したか |
コンソールに再ロード完了のメッセージが表示されてからブラウザを更新すると、変更後の内容が表示されることがあります。
ただし、オートリロード機能は環境によって有効になっていない場合があります。デフォルトでは有効になっていないこともあるため、必ずしも待てば反映されるとは限りません。
オートリロードが有効でない場合
オートリロードが有効でない環境では、サーブレットクラスを保存してしばらく待っても、変更が自動で反映されないことがあります。
その場合は、Tomcatを再起動するのが確実です。
| 状態 | 対応 |
|---|---|
| コンソールに再ロード完了のメッセージが出る | 反映後にブラウザを更新する |
| メッセージが出ない | Tomcatを再起動する |
| 反映されたか分からない | Tomcatを再開して確認する |
学習の初期段階では、変更が反映されない理由を細かく切り分けるよりも、まず再起動で確実に反映できることを覚えておくと安心です。
慣れてきたら、コンソールのメッセージを確認しながら、オートリロードが働いているかどうかも見分けられるようになりましょう。
図3:オートリロードとコンソールの確認

この図から分かること
オートリロードが有効な場合、サーブレットクラスを保存したあと、Tomcatが自動的にWebアプリケーションを再読み込みすることがあります。
このとき、Eclipseのコンソール ビューに 情報:このコンテキストの再ロードが完了しました というメッセージが表示されます。このメッセージが確認できれば、Tomcat側で再読み込みが完了したことが分かります。
ただし、オートリロードは環境によって有効になっていない場合があります。コンソールにメッセージが出ない場合や、しばらく待っても変更が反映されない場合は、Tomcatを再起動して確認しましょう。
変更が反映されないときの確認順序
サーブレットを修正したのに画面が変わらない場合は、次の順番で確認すると落ち着いて対応できます。
| 順番 | 確認内容 |
|---|---|
| 1 | サーブレットクラスを保存したか確認する |
| 2 | Eclipseにコンパイルエラーが出ていないか確認する |
| 3 | ブラウザを更新する |
| 4 | コンソールに再ロード完了のメッセージが出ているか確認する |
| 5 | 反映されない場合はTomcat11(Java25)を再開する |
| 6 | もう一度ブラウザで実行結果を確認する |
この順番で確認すると、保存忘れ、コンパイルエラー、Tomcatの未反映を切り分けやすくなります。
再起動と待機の使い分け
サーブレットの変更を反映する方法には、Tomcatを再起動する方法と、オートリロードを待つ方法があります。
| 方法 | 特徴 |
|---|---|
| Tomcatを再起動する | 変更を確実に反映しやすい |
| しばらく待つ | オートリロードが有効な場合に反映される |
| コンソールを確認する | 再ロードが完了したか判断できる |
確実に反映したい場合は、Tomcatを再起動します。
オートリロードが有効な環境では、保存後に少し待つだけで変更が反映されることもあります。
ただし、オートリロードが有効でない場合は待っても変わらないため、コンソールの表示を確認することが大切です。
学習中は再起動を基本にすると安心
サーブレットの変更反映で迷ったときは、Tomcatを再起動する方法を基本にすると分かりやすいです。
サーバー ビューでTomcat11(Java25)を右クリックし、再開を選ぶことで、Tomcatを停止してから起動し直せます。
再起動後にブラウザで同じURLをリクエストすれば、変更後のサーブレットが実行されるか確認できます。
| 状況 | おすすめの対応 |
|---|---|
| すぐに変更を反映したい | Tomcatを再開する |
| コンソールに再ロード完了が出た | ブラウザを更新する |
| 反映されたか分からない | Tomcatを再開して確認する |
| エラーが出た | コンソールとソースコードを確認する |
サーブレットは、HTMLファイルのように保存と更新だけで必ず反映されるとは限りません。
変更が反映されないときは、Tomcatが古い状態のサーブレットを使っている可能性を考え、再起動やコンソール確認を行いましょう。
