はじめに
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()
メソッドをオーバーライドします。
サーブレットの基本コード
以下は、基本的なサーブレットのサンプルコードです。
1 |
import java.io.IOException;<br>import java.io.PrintWriter;<br>import javax.servlet.ServletException;<br>import javax.servlet.annotation.WebServlet;<br>import javax.servlet.http.HttpServlet;<br>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;<br><br>@WebServlet("/hello") // URLマッピング<br>public class HelloServlet extends HttpServlet {<br><br> @Override<br> protected void doGet(HttpServletRequest request, HttpServletResponse response)<br> throws ServletException, IOException {<br> response.setContentType("text/html");<br> PrintWriter out = response.getWriter();<br><br> out.println("<html>");<br> out.println("<head><title>Hello Servlet</title></head>");<br> out.println("<body>");<br> out.println("<h1>Hello, Servlet!</h1>");<br> out.println("</body>");<br> out.println("</html>");<br> }<br>}<br> |
コードの解説
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にアクセスします。
1 |
http://localhost:8080/プロジェクト名/hello<br> |
5. POSTリクエストの処理
POSTリクエスト は、フォームデータやJSONデータを送信する際に使用されます。doPost()
メソッドをオーバーライドして処理します。
POSTリクエストのサンプル
1 |
@WebServlet("/submit")<br>public class SubmitServlet extends HttpServlet {<br><br> @Override<br> protected void doPost(HttpServletRequest request, HttpServletResponse response)<br> throws ServletException, IOException {<br> response.setContentType("text/html");<br> PrintWriter out = response.getWriter();<br><br> // フォームからのデータ取得<br> String name = request.getParameter("name");<br><br> out.println("<html>");<br> out.println("<body>");<br> out.println("<h1>Hello, " + name + "!</h1>");<br> out.println("</body>");<br> out.println("</html>");<br> }<br>}<br> |
HTMLフォームの例
1 |
<form action="submit" method="POST"><br> <label for="name">名前: </label><br> <input type="text" name="name"><br> <input type="submit" value="送信"><br></form><br> |
リクエストパラメータの取得
request.getParameter("name")
: フォームデータを取得。
6. サーブレットとJSPの連携
JSP(JavaServer Pages) は、HTMLの中にJavaコードを埋め込むことで、動的Webページを作成します。
サーブレットからJSPへデータ転送
サーブレットからJSPへデータを渡すには、リクエスト属性 を使用します。
サーブレットコード
1 |
@WebServlet("/display")<br>public class DisplayServlet extends HttpServlet {<br><br> @Override<br> protected void doGet(HttpServletRequest request, HttpServletResponse response)<br> throws ServletException, IOException {<br> request.setAttribute("message", "Hello from Servlet!");<br> request.getRequestDispatcher("/display.jsp").forward(request, response);<br> }<br>}<br> |
JSPコード
1 |
<%@ page contentType="text/html" %><br><html><br><body><br> <h1>Message: ${message}</h1><br></body><br></html><br> |
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プログラマーになりたい人へ の学習や、実践的な転職サポートを行うサイゼントアカデミー がおすすめです!
コメント