はじめに
Javaのサーブレット(Servlet)は、Webアプリケーション開発の基礎技術であり、HTTPリクエストとレスポンスを処理する役割を担います。Servletを理解することは、Javaサーバーサイド開発への第一歩 です。
この記事では、サーブレットの基本概念から実際に動作するコード例、具体的な活用方法 まで徹底的に解説します。初心者の方でも実践できる内容となっていますので、ぜひ参考にしてください。
1. サーブレットとは?
サーブレット とは、JavaでWebサーバー上に動的なWebページを生成するプログラムです。サーブレットは Java EE (Jakarta EE)仕様の一部であり、HTTPリクエストとレスポンスを扱います。
サーブレットの役割
- クライアント(ブラウザ)から送信されたリクエストを受け取る。
- リクエストを処理し、データベース操作などのロジックを実行。
- レスポンスとしてHTMLやJSONを返す。
2. サーブレットを使うための準備
開発環境の構築
サーブレットを使うためには、以下のツールや環境が必要です。
- JDK(Java Development Kit):Java 8以上を推奨。
- 統合開発環境(IDE):Eclipse、IntelliJ IDEA、NetBeans。
- Webサーバー:Apache Tomcat(バージョン9以上を推奨)。
- ビルドツール:MavenまたはGradle(任意)。
3. サーブレットの基本構造
サーブレットを作成するには HttpServlet クラスを継承し、doGet() や doPost() メソッドをオーバーライドします。
サーブレットの基本コード
以下は、基本的なサーブレットのサンプルコードです。
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello") // URLマッピング
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Hello Servlet</title></head>");
out.println("<body>");
out.println("<h1>Hello, Servlet!</h1>");
out.println("</body>");
out.println("</html>");
}
}
コードの解説
HttpServlet: サーブレットの親クラス。doGet(): GETリクエストを処理するメソッド。@WebServletアノテーション: URLマッピングを指定します(例:/hello)。response.setContentType("text/html"): レスポンスのコンテンツタイプをHTMLに設定。PrintWriter: HTMLを出力するためのクラス。
4. サーブレットのデプロイと実行
Apache Tomcatの設定
- Tomcat公式サイトからTomcatをダウンロードし、解凍します。
webappsフォルダ にWARファイルまたはクラスファイルを配置。
サーブレットのデプロイ手順
- IDEでプロジェクトを作成し、サーブレットクラスを追加。
- web.xml または
@WebServletアノテーションでURLマッピングを設定。 - WARファイル(Webアプリケーションアーカイブ)を作成。
- Tomcatの
webappsフォルダにWARファイルを配置。 - Tomcatを起動し、ブラウザでURLを確認。
ブラウザでの確認
Tomcatが起動したら、以下のURLにアクセスします。
http://localhost:8080/プロジェクト名/hello
5. POSTリクエストの処理
POSTリクエスト は、フォームデータやJSONデータを送信する際に使用されます。doPost() メソッドをオーバーライドして処理します。
POSTリクエストのサンプル
@WebServlet("/submit")
public class SubmitServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// フォームからのデータ取得
String name = request.getParameter("name");
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello, " + name + "!</h1>");
out.println("</body>");
out.println("</html>");
}
}
HTMLフォームの例
<form action="submit" method="POST">
<label for="name">名前: </label>
<input type="text" name="name">
<input type="submit" value="送信">
</form>
リクエストパラメータの取得
request.getParameter("name"): フォームデータを取得。
6. サーブレットとJSPの連携
JSP(JavaServer Pages) は、HTMLの中にJavaコードを埋め込むことで、動的Webページを作成します。
サーブレットからJSPへデータ転送
サーブレットからJSPへデータを渡すには、リクエスト属性 を使用します。
サーブレットコード
@WebServlet("/display")
public class DisplayServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("message", "Hello from Servlet!");
request.getRequestDispatcher("/display.jsp").forward(request, response);
}
}
JSPコード
<%@ page contentType="text/html" %>
<html>
<body>
<h1>Message: ${message}</h1>
</body>
</html>
request.setAttribute(): データをリクエストに追加。RequestDispatcher.forward(): JSPにフォワード。
7. よくあるエラーと解決策
| エラー | 原因 | 対策 |
|---|---|---|
| 404エラー(リソースが見つからない) | URLマッピングが間違っている | @WebServlet の設定を確認。 |
| 405エラー(メソッドが許可されていない) | doGet/doPostが未定義 | 適切なメソッドをオーバーライド。 |
| 500エラー(内部サーバーエラー) | サーブレット内の例外が発生 | try-catch で例外を処理する。 |
8. まとめ
サーブレットは、Javaサーバーサイド開発の基盤となる技術です。基本を理解し、ServletとJSPを組み合わせることで、シンプルなWebアプリケーションを構築できます。
- GET/POSTの処理:
doGet()とdoPost()を使い分ける。 - Tomcatへのデプロイ:WARファイルを作成してサーバーに配置。
- JSP連携:動的なWebページを簡単に生成。
次のステップ
Java Web開発をさらに深めたい方は、絶対にJavaプログラマーになりたい人へ の学習や、実践的な転職サポートを行うサイゼントアカデミー がおすすめです!

入門ガイド-120x68.webp)
コメント