カテゴリ: Servlet 更新日: 2025/12/25

JavaのHttpServletRequestクラスを初心者向けに徹底解説!

HttpServletRequestクラス
HttpServletRequestクラス

先生と生徒の会話形式で理解しよう

生徒

「JavaでHttpServletRequestっていうのを見たんですけど、これって何をするクラスなんですか?」

先生

「HttpServletRequestは、クライアントから送られてきたリクエスト情報を取得するためのクラスです。例えば、リクエストのパラメータやヘッダー情報、セッション情報などを扱うことができます。」

生徒

「リクエストの情報って具体的にどんなものがあるんですか?」

先生

「リクエストパラメータやURL、ヘッダー、Cookieなど、Webアプリケーションで必要な情報が含まれています。では、具体的に使い方を見ていきましょう!」

1. javax.servlet.httpパッケージとは?

1. javax.servlet.httpパッケージとは?
1. javax.servlet.httpパッケージとは?

JavaでWebアプリケーションを作るとき、HTTP通信をそのまま扱うのは大変です。 そこで登場するのがjavax.servlet.httpパッケージです。HTTPリクエストとレスポンスを便利に扱うための道具箱のような存在で、 サーバーとクライアントのやり取りをサポートするクラスがまとめて用意されています。

代表的なクラスと役割を整理すると次のとおりです。

  • HttpServlet:サーバー側の処理を記述する基本クラス。doGetdoPostでリクエストに応答します。
  • HttpServletRequest:ユーザーが送ってきたリクエスト情報(パラメータ・URL・ヘッダーなど)を扱うクラス。
  • HttpServletResponse:サーバーからHTMLやJSONなどのレスポンスを返すためのクラス。

このパッケージのおかげで、リクエスト処理の基礎が整い、開発者は実現したい機能に集中できます。 例えば、次のようにHttpServletを継承したクラスを作るだけで、Web画面からのアクセスを受け取れるようになります。


@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.setContentType("text/plain");
        response.getWriter().println("Hello Servlet!");
    }
}

難しい設定をしなくても、クライアントからのアクセスに応答できる仕組みが最初から整っているのが魅力です。 「Webサーバー」と聞くと難しそうに感じますが、このパッケージを使えば思ったよりシンプルに扱えます。

2. HttpServletRequestクラスとは?

2. HttpServletRequestクラスとは?
2. HttpServletRequestクラスとは?

HttpServletRequestは、ブラウザから届いた「問い合わせ用紙」のようなものです。 フォーム入力値(パラメータ)、アクセス先のURLやクエリ文字列、HTTPヘッダー、Cookie、そしてセッションの取得など、 Web画面から送られてくる情報をひとまとめに持っています。GET/POSTどちらのリクエストでも同じ感覚で扱えるため、 初心者でも動作を追いやすいのが特徴です。

主な用途(まずはここから):

  • フォームから送信されたパラメータを取得する。
  • リクエストURL・クエリ文字列・HTTPメソッドを確認する。
  • クライアント情報(IPアドレス、User-Agent)を読む。
  • セッションやCookieを使った状態管理につなげる。

以下は、よく使う取得処理を1か所にまとめた最小サンプルです。未入力でも落ちないように簡単なnull対策を入れています。


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // パラメータ(未入力なら「ゲスト」にする)
        String name = request.getParameter("name");
        if (name == null || name.isBlank()) name = "ゲスト";

        // 基本情報
        String method = request.getMethod();             // "GET" / "POST" など
        String query  = request.getQueryString();        // 例: "name=Taro"
        String clientIp = request.getRemoteAddr();       // アクセス元IP
        String ua = request.getHeader("User-Agent");     // ブラウザ情報

        response.setContentType("text/html; charset=UTF-8");
        response.getWriter().println("<h1>Hello, " + name + "!</h1>");
        response.getWriter().println("<p>Method: " + method + "</p>");
        response.getWriter().println("<p>Query: " + (query != null ? query : "(なし)") + "</p>");
        response.getWriter().println("<p>IP: " + clientIp + "</p>");
        response.getWriter().println("<p>User-Agent: " + ua + "</p>");
    }
}

まずは上のコードを動かし、「URLに?name=○○を付けると表示が変わる」「User-Agentでブラウザ判定ができる」など、 画面から届く情報の流れを体感してみてください。仕組みがつかめると、入力チェックやログイン処理へ自然に発展させられます。

3. HttpServletRequestの主なメソッド

3. HttpServletRequestの主なメソッド
3. HttpServletRequestの主なメソッド

HttpServletRequestクラスが提供する主なメソッドを以下に示します:

  • getParameter(String name):リクエストパラメータの値を取得します。
  • getHeader(String name):HTTPヘッダーの値を取得します。
  • getCookies():クライアントが送信したCookieを取得します。
  • getSession():現在のセッションを取得します。
  • getRemoteAddr():クライアントのIPアドレスを取得します。

これらのメソッドを組み合わせることで、クライアントからのリクエスト情報を効率的に処理できます。

4. HttpServletRequestを学ぶポイント

4. HttpServletRequestを学ぶポイント
4. HttpServletRequestを学ぶポイント

HttpServletRequestクラスを学ぶ際には、以下のポイントを押さえると理解が深まります:

  1. リクエストの流れを理解する:クライアントからサーバーへのデータ送信がどのように処理されるかを学びましょう。
  2. 基本的なメソッドを使いこなす:getParameterやgetHeaderを使ってリクエスト情報を取得する練習をしましょう。
  3. 応用的な処理に挑戦する:セッションやCookieを使ったユーザー管理を実装してみましょう。
  4. Servlet全体の理解を深める:HttpServletRequestとHttpServlet、HttpServletResponseの関係性を把握しましょう。

まずは簡単なサンプルコードを実行し、リクエストの仕組みを体験してみてください。

5. フォーム送信とHttpServletRequestの連携例

5. フォーム送信とHttpServletRequestの連携例
5. フォーム送信とHttpServletRequestの連携例

Webアプリケーションでは、フォームからデータを送信し、サーバー側で受け取って処理する場面がよくあります。 HttpServletRequestは、このときフォーム内の入力データを受け取る役目を持っています。

例えば、以下のようなフォームがあるとします。


<form action="/login" method="POST">
    <input type="text" name="userId">
    <input type="password" name="password">
    <button type="submit">ログイン</button>
</form>

このフォームが送信されると、サーバー側のServletで次のように受け取れます。


String userId = request.getParameter("userId");
String password = request.getParameter("password");

このように、HTMLフォームとJavaのサーバー処理はname属性を使って連携しています。 仕組みが分かると、ログインや問い合わせフォームなどが簡単に作れるようになります。

6. セッション管理とリクエストの関係

6. セッション管理とリクエストの関係
6. セッション管理とリクエストの関係

HttpServletRequestは、ただデータを受け取るだけではなく、 ユーザーの状態を覚えておく「セッション管理」にも利用されます。

Webは通常「1回アクセスしたら終了」という仕組みですが、セッションを使うことで 「ログイン中」「買い物カゴに商品が入っている」などの情報を保持できます。


HttpSession session = request.getSession();
session.setAttribute("loginUser", userId);

セッションはログイン機能を作るときの基本中の基本です。 HttpServletRequestの役割はとても大きいことがわかりますね。

7. 例外が出たときの対処方法(初心者がつまずきやすいポイント)

7. 例外が出たときの対処方法(初心者がつまずきやすいポイント)
7. 例外が出たときの対処方法(初心者がつまずきやすいポイント)

初心者がHttpServletRequestを使うときに多いミスとして、 「パラメータ名が一致していない」「nullを想定していない」「文字化け」などがあります。

  • getParameterの値がnull → name属性と一致しているか確認
  • 日本語が文字化け → doPost内でrequest.setCharacterEncoding("UTF-8")を設定
  • NullPointerException → nullチェックを行う

String name = request.getParameter("name");
if (name == null || name.isEmpty()) {
    name = "ゲスト";
}

こういったチェックを入れるだけで、安定したアプリ開発につながります。 エラーが出ても焦らず、入力値やパラメータ名を見直してみましょう。

まとめ

まとめ
まとめ

本記事では、Javaのjavax.servlet.httpパッケージと、HttpServletRequestクラスについて詳しく解説しました。HttpServletRequestクラスは、クライアントから送信されたリクエスト情報を処理するための中心的なクラスであり、Webアプリケーション開発において欠かせない役割を果たします。

特に、リクエストパラメータやヘッダー、セッション情報、Cookieの取得など、Webアプリケーションでよく使用される機能を簡単に実現できる点が特徴です。今回の内容を理解することで、Servletを使用したWebアプリケーションの基本的な仕組みを学ぶことができます。

以下は、HttpServletRequestの応用例を示したサンプルコードです:


@WebServlet("/userInfo")
public class UserInfoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        String userAgent = request.getHeader("User-Agent");
        String sessionId = request.getSession().getId();
        response.setContentType("text/html");
        response.getWriter().println("<h1>Client Information</h1>");
        response.getWriter().println("<p>User Agent: " + userAgent + "</p>");
        response.getWriter().println("<p>Session ID: " + sessionId + "</p>");
    }
}

このコードでは、クライアントのブラウザ情報(User-Agentヘッダー)やセッションIDを取得し、それをレスポンスとして表示しています。HttpServletRequestを使用することで、クライアントに応じた動的な処理が簡単に行えます。

先生と生徒の振り返り会話

生徒

「HttpServletRequestクラスの使い方がよく分かりました!特に、クライアントの情報を簡単に取得できるのが便利ですね。」

先生

「その通りです。クライアントから送信されたデータを処理する基本を押さえることで、Webアプリケーション開発の幅が広がりますよ。」

生徒

「次は、Cookieやセッションの扱い方について詳しく学びたいです。」

先生

「良いですね。Cookieやセッションはユーザー管理や認証において重要な役割を果たしますので、次回はそれについて詳しく解説しましょう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのHttpServletRequestとは何ですか?初心者でも使える機能ですか?

HttpServletRequestとは、JavaでWebアプリケーションを作るときに、クライアントから送信されたリクエスト情報(パラメータやIPアドレスなど)を取得できるクラスです。初心者にも扱いやすく、基本を理解すればすぐに使えます。
カテゴリの一覧へ
新着記事
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
SpringのBindingResult完全ガイド!初心者でもわかる入力チェックとgetTargetの使い方
Thymeleafのth:data-*属性を使いこなす!初心者向け完全解説
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説