Java初心者必見!サーブレットの使い方完全ガイド

Java

はじめに

Javaのサーブレット(Servlet)は、Webアプリケーション開発の基礎技術であり、HTTPリクエストとレスポンスを処理する役割を担います。Servletを理解することは、Javaサーバーサイド開発への第一歩 です。

この記事では、サーブレットの基本概念から実際に動作するコード例、具体的な活用方法 まで徹底的に解説します。初心者の方でも実践できる内容となっていますので、ぜひ参考にしてください。


1. サーブレットとは?

サーブレット とは、JavaでWebサーバー上に動的なWebページを生成するプログラムです。サーブレットは Java EE (Jakarta EE)仕様の一部であり、HTTPリクエストとレスポンスを扱います。

サーブレットの役割

  • クライアント(ブラウザ)から送信されたリクエストを受け取る。
  • リクエストを処理し、データベース操作などのロジックを実行。
  • レスポンスとしてHTMLやJSONを返す。

2. サーブレットを使うための準備

開発環境の構築

サーブレットを使うためには、以下のツールや環境が必要です。

  1. JDK(Java Development Kit):Java 8以上を推奨。
  2. 統合開発環境(IDE):Eclipse、IntelliJ IDEA、NetBeans。
  3. Webサーバー:Apache Tomcat(バージョン9以上を推奨)。
  4. ビルドツール: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>");
}
}

コードの解説

  1. HttpServlet: サーブレットの親クラス。
  2. doGet(): GETリクエストを処理するメソッド。
  3. @WebServlet アノテーション: URLマッピングを指定します(例: /hello)。
  4. response.setContentType("text/html"): レスポンスのコンテンツタイプをHTMLに設定。
  5. PrintWriter: HTMLを出力するためのクラス。

4. サーブレットのデプロイと実行

Apache Tomcatの設定

  1. Tomcat公式サイトからTomcatをダウンロードし、解凍します。
  2. webapps フォルダ にWARファイルまたはクラスファイルを配置。

サーブレットのデプロイ手順

  1. IDEでプロジェクトを作成し、サーブレットクラスを追加。
  2. web.xml または @WebServlet アノテーションでURLマッピングを設定。
  3. WARファイル(Webアプリケーションアーカイブ)を作成。
  4. Tomcatの webapps フォルダにWARファイルを配置。
  5. 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プログラマーになりたい人へ の学習や、実践的な転職サポートを行うサイゼントアカデミー がおすすめです!

コメント

タイトルとURLをコピーしました