
サーブレット&JSPの基本|サーブレットのURLと実行方法
ファイル名ではなくURLパターンで呼び出す。サーブレットを正しく実行するためのURLの仕組みを身につけよう
サーブレットクラスを作成し、HTMLを出力する処理を書いたら、次に大切になるのが実行方法です。
HTMLファイルの場合は、ブラウザからファイル名を指定してアクセスしました。たとえば、studyプロジェクト内のwelcome.htmlであれば、URLの最後にwelcome.htmlのようなファイル名を指定して表示できます。
しかし、サーブレットクラスはHTMLファイルとは少し違います。ブラウザから直接WelcomeServlet.javaやWelcomeServlet.classを指定して実行するわけではありません。
サーブレットを実行するときは、あらかじめサーブレットクラスに設定したURLパターンを使ってリクエストします。URLパターンは、ブラウザからそのサーブレットを呼び出すための名前のようなものです。
ここでは、前の記事で作成したWelcomeServlet.javaを使い、URLパターンの設定方法、ブラウザからの実行方法、Eclipseの実行機能、リンクによる実行、GETリクエストとdoGetメソッドの関係までを順番に確認していきます。
HTMLファイルとサーブレットではURLの最後が違う
HTMLファイルを表示するときは、URLの最後にファイル名を指定します。
たとえば、studyプロジェクトのsrc/main/webappにwelcome.htmlを置いた場合、URLは次のようになります。
一方、サーブレットクラスを実行するときは、URLの最後にJavaファイル名を書くのではありません。代わりに、サーブレットクラスに設定したURLパターンを指定します。
サーブレットクラスのURLは、次のような形になります。
今回のstudyプロジェクトで、WelcomeServletにwelcomeというURLパターンを設定した場合、ブラウザから指定するURLは次のようになります。
HTMLファイルとサーブレットのURLの違い
| 種類 | URLの最後に指定するもの | 例 |
|---|---|---|
| HTMLファイル | ファイル名 | http://localhost:8080/study/welcome.html |
| サーブレット | URLパターン | http://localhost:8080/study/welcome |
この違いはとても大切です。
WelcomeServlet.javaというクラスを作ったからといって、URLの最後にWelcomeServlet.javaを指定するわけではありません。また、WelcomeServlet.classを指定するわけでもありません。
ブラウザからアクセスするときに使う名前は、サーブレットクラスに設定したURLパターンです。
URLパターンとは
URLパターンは、サーブレットクラスをブラウザから呼び出すための名前です。
たとえば、WelcomeServletというクラスに/welcomeというURLパターンを設定すると、ブラウザは/welcomeという名前でWelcomeServletをリクエストできるようになります。
URLパターンは、クラス名と同じにする必要はありません。開発者が分かりやすい名前を付けることができます。
| サーブレットクラス名 | URLパターン | ブラウザで指定するURL |
|---|---|---|
| WelcomeServlet | /welcome | http://localhost:8080/study/welcome |
| WelcomeServlet | /servlet/welcome | http://localhost:8080/study/servlet/welcome |
| WelcomeServlet | /welcome.html | http://localhost:8080/study/welcome.html |
URLパターンを/welcome.htmlのように設定すると、見た目上はHTMLファイルへアクセスしているように見えます。しかし、実際にはWelcomeServletが実行されます。
このように、URLパターンはサーブレットクラスの呼び出し名として使われます。
図1:HTMLファイルとサーブレットのURLの違い

この図から分かること
HTMLファイルを表示するときは、URLの最後にファイル名を指定します。
一方、サーブレットを実行するときは、ファイル名ではなくURLパターンを指定します。WelcomeServlet.javaというファイル名であっても、@WebServletで/welcomeと設定していれば、ブラウザからは/study/welcomeでアクセスします。
サーブレットでは、クラス名、Javaファイル名、URLパターンを分けて考えることが大切です。
@WebServletでURLパターンを設定する
サーブレットクラスにURLパターンを設定するには、@WebServletアノテーションを使います。
アノテーションとは、クラスやメソッドなどに追加情報を付けるための仕組みです。サーブレットでは、@WebServletをクラスの直前に書くことで、このクラスはこのURLパターンで呼び出します、という情報をTomcatへ伝えます。
基本形は次のとおりです。
@WebServlet("/URLパターン")
URLパターンは、必ず/から始めます。
たとえば、WelcomeServletを/welcomeというURLパターンで実行したい場合は、次のように指定します。
@WebServlet("/welcome")
この設定により、Tomcatは/study/welcomeへのリクエストを受け取ったときに、WelcomeServletを実行するようになります。
@WebServletで確認すること
| 確認項目 | 内容 |
|---|---|
| アノテーション名 | @WebServletを使う |
| 指定する値 | /から始まるURLパターン |
| 書く場所 | サーブレットクラスの直前 |
| 必要なimport | jakarta.servlet.annotation.WebServlet |
@WebServletを使うには、jakarta.servlet.annotation.WebServletのimportが必要です。
Eclipseで@WebServletに赤い波線が表示される場合は、import文が不足している可能性があります。Eclipseの修正機能を使って追加できます。
WelcomeServlet.javaの完成例
ここでは、ここまでの記事で作成したWelcomeServlet.javaにURLパターンを設定し、ブラウザへHTMLを出力する完全な形を示します。
URLパターンは/welcomeにします。
ファイル名: WelcomeServlet.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/welcome")
public class WelcomeServlet extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html lang=\"ja\">");
out.println("<head>");
out.println("<meta charset=\"UTF-8\">");
out.println("<title>WelcomeServletの実行</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>WelcomeServletを実行しました</h1>");
out.println("<p>URLパターン /welcome からサーブレットが呼び出されています。</p>");
out.println("</body>");
out.println("</html>");
}
}ブラウザの表示例

このプログラムで特に注目したいのは、クラスの直前にある次の記述です。
@WebServlet("/welcome")
この設定によって、WelcomeServletは/welcomeというURLパターンで呼び出せるようになります。
studyプロジェクトで実行する場合、ブラウザからアクセスするURLは次のようになります。
WelcomeServlet.javaの主な構成
| 記述 | 役割 |
|---|---|
| import jakarta.servlet.annotation.WebServlet; | @WebServletを使うために必要 |
| @WebServlet("/welcome") | URLパターンを/welcomeに設定する |
| extends HttpServlet | サーブレットクラスとして動作させる |
| doGet | GETリクエストを受け取ったときに実行される |
| response.setContentType | HTMLと文字コードを指定する |
| PrintWriter out | ブラウザへHTMLを出力する |
| out.println | レスポンス本文へHTMLを書き込む |
クラス名はWelcomeServletですが、URLの最後に指定するのはwelcomeです。この対応関係をしっかり確認しておきましょう。
図2:@WebServletでURLパターンを設定する

この図から分かること
@WebServlet("/welcome")は、ブラウザから届いた/welcomeへのリクエストとWelcomeServletを結び付ける設定です。
ブラウザがhttp://localhost:8080/study/welcomeへアクセスすると、TomcatはURLパターン/welcomeに対応するサーブレットを探します。そして、対応するWelcomeServletのdoGetメソッドを実行します。
URLパターンが設定されていないと、TomcatはどのURLでそのサーブレットを呼び出せばよいか判断できません。サーブレットを実行するには、URLパターンの設定が欠かせません。
サーブレットを実行する方法
WelcomeServletにURLパターンを設定したら、ブラウザからリクエストして実行できるようになります。
実行方法には、主に次の3つがあります。
| 方法 | 内容 |
|---|---|
| 方法① | ブラウザを起動してURLを入力する |
| 方法② | Eclipseの実行機能を使う |
| 方法③ | HTMLのリンクをクリックする |
どの方法でも、最終的にはTomcatへリクエストが送られ、URLパターンに対応するサーブレットが実行されます。
方法① ブラウザにURLを入力して実行する
1つ目の方法は、ブラウザのアドレスバーにURLを直接入力する方法です。
Tomcatを起動した状態で、次のURLへアクセスします。
ブラウザからこのURLへアクセスすると、Tomcatはstudyアプリケーション内で/welcomeに対応するサーブレットを探します。そして、WelcomeServletのdoGetメソッドを実行します。
URLを構成する要素
| URLの部分 | 今回の値 |
|---|---|
| http | 通信方式 |
| localhost | 自分のコンピュータ上のサーバー |
| 8080 | Tomcatが使用するポート番号 |
| study | アプリケーション名 |
| welcome | WelcomeServletに設定したURLパターン |
URLの最後はWelcomeServletではなくwelcomeです。@WebServlet("/welcome")で設定したURLパターンを指定します。
ブラウザに表示される内容は、WelcomeServletのdoGetメソッド内でout.printlnによって出力したHTMLです。
方法② Eclipseの実行機能を使う
2つ目の方法は、Eclipseの実行機能を使う方法です。
パッケージ・エクスプローラーでWelcomeServlet.javaを選択し、右クリックします。そのあと、実行 → サーバーで実行を選択します。
使用するサーバーにはTomcat11(Java25)を選択します。studyプロジェクトをこのサーバーで実行する設定にしている場合は、次回以降のサーバー選択を省略できることがあります。

Eclipseから実行する手順
| 手順 | 操作 |
|---|---|
| 1 | パッケージ・エクスプローラーでWelcomeServlet.javaを選択する |
| 2 | 右クリックする |
| 3 | 実行 → サーバーで実行を選択する |
| 4 | Tomcat11(Java25)を選択する |
| 5 | 完了をクリックする |
| 6 | ブラウザに実行結果が表示されることを確認する |
Eclipseの実行機能を使うと、Tomcatの起動、ブラウザの起動、URLへのアクセスをまとめて行えます。
ただし、内部で行われていることは、ブラウザにURLを入力する方法と同じです。最終的にはURLパターンに対応するサーブレットへGETリクエストが送られ、doGetメソッドが実行されます。
方法③ HTMLのリンクをクリックして実行する
3つ目の方法は、HTML内にサーブレットへのリンクを作成し、そのリンクをクリックして実行する方法です。
Webアプリケーションでは、最初の画面だけをURL入力やEclipseの実行機能で開き、その後はページ内のリンクをクリックしながら別の画面へ移動することがよくあります。
サーブレットへのリンクは、aタグのhref属性にURLパターンを指定して作成します。
リンクHTMLの例
ファイル名: servlet-menu.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サーブレット実行メニュー</title>
</head>
<body>
<h1>サーブレット実行メニュー</h1>
<p>下のリンクをクリックするとWelcomeServletを実行します。</p>
<a href="welcome">WelcomeServletを実行する</a>
</body>
</html>ブラウザの表示例

このHTMLファイルをstudyプロジェクトのsrc/main/webappに配置した場合、servlet-menu.htmlを表示したあと、リンクをクリックするとWelcomeServletが実行されます。
aタグのhref属性にはwelcomeを指定しています。これは、WelcomeServletに設定したURLパターン/welcomeに対応しています。
リンク指定の考え方
| 記述 | 意味 |
|---|---|
| href="welcome" | 同じアプリケーション内のwelcomeへリクエストする |
| @WebServlet("/welcome") | welcomeへのリクエストでWelcomeServletを実行する |
リンクをクリックした場合も、ブラウザからTomcatへリクエストが送られます。その結果、WelcomeServletのdoGetメソッドが実行されます。
図3:サーブレットを実行する3つの方法

この図から分かること
サーブレットを実行する方法には、URLを直接入力する方法、Eclipseの実行機能を使う方法、HTMLのリンクをクリックする方法があります。
見た目の操作は異なりますが、どの方法でも最終的にはTomcatへリクエストが送られます。TomcatはURLパターンを確認し、対応するWelcomeServletを実行します。
URL入力やEclipseの実行機能は、最初の画面を開くときによく使います。その後、Webアプリケーション内を移動するときには、HTMLのリンクを使ってサーブレットを呼び出すことが多くなります。
URL入力とリンククリックではdoGetが実行される
ブラウザのアドレスバーにURLを入力してサーブレットを実行した場合、通常はGETリクエストになります。
また、aタグのリンクをクリックした場合も、通常はGETリクエストになります。
GETリクエストが届くと、サーブレットではdoGetメソッドが実行されます。
| リクエスト方法 | 実行されるメソッド |
|---|---|
| GETリクエスト | doGetメソッド |
| POSTリクエスト | doPostメソッド |
今回のWelcomeServlet.javaでは、doGetメソッドを定義しています。そのため、URLを入力した場合やリンクをクリックした場合に、doGetメソッド内の処理が実行されます。
リクエストメソッドと実行メソッドの関係
サーブレットでは、常にdoGetメソッドだけが実行されるわけではありません。
どのメソッドが実行されるかは、ブラウザから送られるリクエストメソッドによって決まります。
GETリクエストであればdoGetメソッド、POSTリクエストであればdoPostメソッドが実行されます。
GETとPOSTの基本的な関係
| リクエストメソッド | 主な場面 | サーブレットで実行されるメソッド |
|---|---|---|
| GET | URL入力、リンククリック | doGet |
| POST | フォームからの送信など | doPost |
URL入力やリンククリックでは、ブラウザが自動的にGETリクエストを送ります。そのため、今回の範囲ではdoGetメソッドが実行されると考えれば大丈夫です。
POSTリクエストを使う場面は、フォームからデータを送信するときなどに登場します。doPostメソッドは、名前がdoGetと異なるだけで、引数、戻り値、throwsに記述する例外の形はdoGetと同じです。
URLパターンを間違えた場合
サーブレットを実行できない場合は、まずURLパターンが正しいか確認します。
WelcomeServlet.javaで次のように設定している場合、ブラウザで指定するURLの最後はwelcomeです。
@WebServlet("/welcome")
正しいURLは次のようになります。
次のようなURLでは、意図したサーブレットが実行されない可能性があります。
| 間違いやすいURL | 問題点 |
|---|---|
| http://localhost:8080/study/WelcomeServlet.java | Javaファイル名を指定している |
| http://localhost:8080/study/WelcomeServlet.class | クラスファイル名を指定している |
| http://localhost:8080/study/WelcomeServlet | URLパターンと一致していない |
| http://localhost:8080/study/welcome.html | URLパターンが/welcomeであれば一致しない |
サーブレットのURLは、ファイル名ではなくURLパターンで決まります。
実行できないときは、@WebServletの指定とブラウザのURLを見比べましょう。
URLパターンを設定しないと実行できない
サーブレットクラスを作成しても、URLパターンが設定されていなければ、ブラウザからどのURLで呼び出せばよいのかTomcatが判断できません。
そのため、@WebServletを使ってURLパターンを設定することが重要です。
Eclipseでサーブレットクラスを作成した場合、クラス名に合わせたURLパターンが自動で設定されることがあります。ただし、学習中は自動生成された内容をそのまま流すのではなく、@WebServletの中身を確認しておきましょう。
| 確認する場所 | 確認内容 |
|---|---|
| @WebServlet | /から始まるURLパターンが設定されているか |
| import文 | jakarta.servlet.annotation.WebServletがあるか |
| ブラウザのURL | アプリケーション名の後ろにURLパターンを指定しているか |
| サーバー | studyがTomcat11(Java25)で実行されているか |
Webアプリケーションの設定方法
サーブレットのURLパターンなど、Webアプリケーションに関する設定には、アノテーションを使う方法とweb.xmlを使う方法があります。
@WebServletのようなアノテーションを使う方法では、サーブレットクラスの中にURLパターンを直接記述できます。クラスと設定の対応関係が見やすいため、学習しやすい方法です。
一方、web.xmlはXML形式の設定ファイルです。サーブレットが登場した初期から使われてきた設定方法で、Webアプリケーション全体の設定をファイルにまとめて記述します。
| 設定方法 | 特徴 |
|---|---|
| アノテーション | クラスに直接設定を書ける |
| web.xml | XML形式の設定ファイルにまとめて書く |
アノテーションによる設定は、サーブレット3.0以降で利用できるようになった方法です。
今回の学習では、WelcomeServlet.javaに@WebServletを付けてURLパターンを設定する方法を使います。
WelcomeServlet.javaの実行手順
最後に、WelcomeServlet.javaを実行する流れを整理しておきます。
まず、WelcomeServlet.javaに@WebServlet("/welcome")が付いていることを確認します。次に、ファイルを保存します。Eclipseでは保存時に自動コンパイルが行われます。
そのあと、Tomcat11(Java25)が起動していることを確認し、ブラウザから次のURLへアクセスします。
または、EclipseでWelcomeServlet.javaを右クリックし、実行 → サーバーで実行を選択します。
正常に実行されると、doGetメソッドが呼び出され、WelcomeServlet.javaのout.printlnで出力したHTMLがブラウザに表示されます。
実行前後の確認項目
| 確認項目 | 内容 |
|---|---|
| プロジェクト名 | studyになっているか |
| サーブレットクラス | WelcomeServlet.javaを使用しているか |
| URLパターン | @WebServlet("/welcome")になっているか |
| アクセスURL | http://localhost:8080/study/welcomeになっているか |
| 実行メソッド | GETリクエストでdoGetが実行される |
| 表示内容 | WelcomeServletが出力したHTMLが表示される |
サーブレットを実行するときは、ファイル名ではなくURLパターンを使う。この考え方を押さえておくと、今後サーブレットが増えてきても、どのURLでどの処理が動くのかを整理しやすくなります。
