サーブレットのURLマッピングとは?web.xmlと@WebServletの使い方を初心者向けに解説!
生徒
「Javaのサーブレットって、URLにどうやってつながってるんですか?URLマッピングって何か特別な設定が必要なんですか?」
先生
「URLマッピングは、特定のURLにアクセスされたときに、どのサーブレットを動かすかを決める設定だよ。Javaではweb.xmlという設定ファイルや、@WebServletというアノテーションを使って指定できるんだ。」
生徒
「なるほど!プログラムの中でURLとサーブレットをひもづけてるんですね。両方の方法があるってことですか?」
先生
「そのとおり。どちらの方法も知っておくと、柔軟にWebアプリケーションを作れるようになるよ。」
1. サーブレットのURLマッピングとは?
サーブレットのURLマッピングとは、「どのURLにアクセスされたら、どのサーブレットを動かすのか」を決めるとても大事な仕組みです。たとえば、Webブラウザで「/hello」と入力されたときに、HelloServletというクラスを実行する、といった対応づけを行います。これによって、ユーザーの操作に応じた処理を切り替えることができ、動きのあるWebアプリケーションが作れるようになります。
もう少しイメージしやすいように、簡単な例を見てみましょう。下の例では、「/sample」というURLにアクセスされたら画面に文字を表示するイメージを示しています。
// ※ ここではマッピングのイメージだけを示す簡単な疑似例
// "/sample" にアクセスすると実行されると考えてみましょう。
public class SampleServlet {
public void service() {
System.out.println("サーブレットが動きました!");
}
}
このように、URLマッピングは「URL」→「実行するクラス」という流れをつなぐ“住所録”のような役割を持っています。Javaでは、設定ファイルで指定する方法(web.xml)と、Javaコード上で直接指定する方法(@WebServlet)の2つが用意されており、どちらも覚えておくと開発がとてもスムーズになります。
2. web.xmlを使ったURLマッピングの方法
まずは、昔からある基本的な方法である「web.xml」を使ったサーブレットのURLマッピングを見てみましょう。web.xmlは、JavaのWebアプリケーションの設定を書き込むためのXMLファイルで、通常はプロジェクト内のWEB-INF/web.xmlという場所に置かれています。このファイルの中で、「どのクラスをどのURLに対応させるか」を文章のように書いていくイメージです。
書き方の流れはシンプルで、<servlet>タグでサーブレットクラスを登録し、<servlet-mapping>タグでURLパターンを関連付けます。実際の例を見た方が分かりやすいので、簡単なサンプルを確認してみましょう。
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
この例では、まず<servlet>タグの中で「HelloServlet」という名前と、実際のクラス名com.example.HelloServletを登録しています。次に、<servlet-mapping>タグで、先ほど登録した<servlet-name>と<url-pattern>/helloを結びつけています。これにより、ブラウザから「http://localhost:8080/(アプリ名)/hello」にアクセスされたときに、HelloServletクラスが実行されるようになります。
<servlet-name>は開発者が分かりやすい名前を付ければよく、<servlet-class>には実際のサーブレットクラスの完全修飾名(パッケージを含めたクラス名)を書きます。URLを変えたいときは、<url-pattern>の値を「/hello」から「/greeting」などに変更するだけで簡単に切り替えられます。複数のサーブレットを登録したい場合も、同じ形で<servlet>と<servlet-mapping>のセットを追加していくことで整理して管理できます。
3. @WebServletアノテーションを使ったマッピング
Java EE6以降では、web.xmlファイルを使わなくても、@WebServletというアノテーションを使って直接Javaクラス内でURLを指定できるようになりました。これにより、設定ファイルを開かなくてもサーブレットのURLマッピングが可能になります。
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().println("Hello from @WebServlet");
}
}
この方法では、URLとクラスがコード上で完結するため、管理がしやすくなるというメリットがあります。ただし、プロジェクトによってはweb.xmlで統一している場合もあるので、両方の方法を覚えておくと便利です。
4. 複数URLに対応する方法
1つのサーブレットに複数のURLパターンを割り当てることも可能です。@WebServletを使う場合は、複数のURLを配列で指定できます。
@WebServlet({"/hello", "/greeting"})
public class HelloServlet extends HttpServlet {
// 処理内容
}
このように記述することで、ユーザーが「/hello」でも「/greeting」でも同じサーブレットにアクセスできます。web.xmlの場合でも、<url-pattern>を複数定義することで対応可能です。
5. URLパターンの指定ルール
サーブレットのURLマッピングには、特定のルールがあります。代表的なパターンは以下の通りです:
/example:特定のURLに対応*.do:拡張子に対応/admin/*:パス全体に対応
これにより、アプリケーションのURL設計を柔軟に行うことができます。例えば、管理画面すべてを「/admin/*」でカバーしたり、すべてのフォーム処理を「*.do」で統一したりする設計が可能になります。
6. URLマッピングで注意すべきポイント
URLマッピングでよくあるミスとして、「URLの指定が重複している」「記述ミスでアクセスできない」「マッピングが反映されていない」などがあります。特にweb.xmlでの記述ミスはサーブレットが動かない原因になります。
また、@WebServletを使った場合は、アノテーションが正しく読み込まれているか、クラスが正しいパッケージにあるかも確認しましょう。開発環境によっては、再ビルドや再起動が必要な場合もあります。
7. URLマッピングを理解するメリット
JavaサーブレットのURLマッピングを理解することで、Webアプリケーションの構成を論理的に設計できるようになります。たとえば、ログイン画面、ユーザー一覧、商品詳細など、それぞれの機能に対応するURLを整理して開発できます。
また、保守性の向上にもつながります。URL構造をルール化しておけば、新しい機能を追加する際も迷わず開発でき、チーム開発でも混乱を避けることができます。
8.まとめ
今回の記事では、JavaサーブレットにおけるURLマッピングについて、初心者の方にも理解しやすいように解説しました。Webアプリケーション開発において、URLと処理クラス(サーブレット)を正しく対応付けることは非常に重要であり、Javaでは主に「web.xml」を使った設定方法と「@WebServlet」アノテーションを使う方法の2つが存在します。どちらの方法でも、ユーザーからのHTTPリクエストに応じて適切な処理を実行できるように設計することができます。
web.xmlを使ったURLマッピングでは、XML形式でサーブレット名やクラス、URLパターンを指定します。設定が明示的であるため、複数人でのチーム開発やレガシーなJava EE環境でもよく使用されます。一方、@WebServletアノテーションを使うと、Javaコード上でマッピングを完結できるため、設定の簡略化や保守性の向上が期待できます。特に近年ではアノテーション方式が主流になりつつあり、学んでおくべき基本知識といえるでしょう。
また、1つのサーブレットに複数のURLを割り当てたり、ワイルドカードや拡張子マッピング(*.do)などの柔軟なURLパターンを指定することで、より効率的にWebアプリケーションの構成を設計できます。これにより、ログイン機能や管理画面、データ検索処理など、複数の機能をきれいに分割し、それぞれの役割に応じたURL設計が可能になります。
下記は、アノテーションとweb.xmlの両方でURLマッピングを行う例です。開発現場によって使い分けが必要になる場面が多いため、両方を理解しておくことがWebエンジニアとしてのスキルアップに直結します。
@WebServlet("/info")
public class InfoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().println("サーブレット情報ページ");
}
}
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.example.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
さらに、開発中はURLマッピングに関するトラブルも発生しがちです。たとえば「404エラーが出る」「意図しないサーブレットが呼ばれる」といったケースです。これらの原因としては、web.xmlの記述ミスやURLのスペルミス、アノテーションのパッケージ誤りなどが多いため、マッピング内容は一つ一つ丁寧にチェックする習慣を身につけましょう。
URLマッピングの理解が深まると、Webアプリケーションの可読性、拡張性、保守性が飛躍的に向上します。たとえば、REST設計の導入にも役立ちますし、MVCモデルでの開発においても役割分担が明確になります。今後、Spring Bootなどのフレームワークを使った開発を学んでいく際にも、こうした基本概念はしっかり身につけておくと応用が利きます。
SEOを意識した観点でも、URLは人間にも検索エンジンにも分かりやすく設計することが重要です。「/login」「/products」「/user/profile」など、意味のあるパス設計とURLマッピングを組み合わせることで、検索エンジンからの評価も高まりやすくなります。
今後は「Java サーブレット URLマッピングとは」「web.xml servlet mapping の書き方」「@WebServlet 使い方」「Java サーブレット URL 設定方法」「アノテーション URLマッピング servlet」「サーブレット 404 エラー 原因」といったキーワードで、さらに情報を深掘りしていくのがおすすめです。
生徒
「URLマッピングって、Webアプリの中でサーブレットとつなげるための大事な仕組みだったんですね!」
先生
「そうだね。どのURLでどのサーブレットを動かすかを決めるから、Webアプリの構造そのものに関わってくるんだ。」
生徒
「@WebServletで簡単に書けるのも便利だし、web.xmlを使ってきちんと管理するのも良さそうですね!」
先生
「その通り!現場によって使い分けることもあるから、両方のやり方を覚えておこう。特にURLの指定ミスや記述ミスはトラブルの元になるから注意が必要だよ。」
生徒
「はい!URLの設計も含めて、アプリ全体を意識して作れるように頑張ります!」