カテゴリ: Servlet 更新日: 2026/10/13

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:サーバー側の処理を記述する基本クラス。doGetやdoPostでリクエストに応答します。
  • 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は「届いた情報を取り出す道具箱」です。まずは頻出メソッドを押さえ、その場で値を確認する習慣をつけましょう。 下の表現だけで、フォーム入力・アクセス先URL・ヘッダー・Cookie・セッションまで一通り扱えます。

  • getParameter(String name):フォームやクエリの1件の値を取得。
  • getParameterValues(String name):チェックボックス等の複数値を配列で取得。
  • getHeader(String name):HTTPヘッダー(User-Agentなど)を取得。
  • getCookies():クライアントから届いたCookie配列を取得。
  • getSession():現在のセッション(なければ作成)を取得。
  • getMethod() / getRequestURI() / getQueryString():メソッド・パス・クエリを確認。
  • getRemoteAddr():アクセス元IPアドレスを取得。

下記は「届いた情報をそのまま表示」する最小サンプルです。nullや未入力を想定し、落ちない書き方を心がけています。


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

        String name = defaultIfBlank(request.getParameter("name"), "ゲスト");
        String[] tags = request.getParameterValues("tag"); // ?tag=a&amp;tag=b のような複数値
        String ua = request.getHeader("User-Agent");
        Cookie[] cookies = request.getCookies();
        HttpSession session = request.getSession(); // ログイン情報などを保存するときに使う
        session.setAttribute("lastAccessName", name);

        response.setContentType("text/plain; charset=UTF-8");
        response.getWriter().printf("Method: %s%n", request.getMethod());
        response.getWriter().printf("URI   : %s%n", request.getRequestURI());
        response.getWriter().printf("Query : %s%n", String.valueOf(request.getQueryString()));
        response.getWriter().printf("IP    : %s%n", request.getRemoteAddr());
        response.getWriter().printf("Name  : %s%n", name);
        response.getWriter().printf("Tags  : %s%n", tags == null ? "(なし)" : String.join(",", tags));
        response.getWriter().printf("UA    : %s%n", ua);
        response.getWriter().printf("Cookie: %d 件%n", cookies == null ? 0 : cookies.length);
    }

    private String defaultIfBlank(String v, String def) { return (v == null || v.isBlank()) ? def : v; }
}

まずはブラウザのアドレス欄に/inspect?name=Taro&tag=a&tag=bと入力して挙動を確認してみましょう。 表示される文字列を手掛かりに、どのメソッドで何が取れるのかが直感的に理解できます。分岐や入力チェックは少しずつ追加すれば十分です。

4. HttpServletRequestを学ぶポイント

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

HttpServletRequestを覚えるときは、いきなり複雑な仕組みを追うよりも、 「ブラウザから届いた情報を、どう取り出して画面に表示できるか」を体験するのが近道です。 まずは下のポイントを意識してみましょう。

  1. リクエストの流れを理解する: ブラウザがフォームを送信 → サーバーが受け取り → Servletが処理する、という流れをつかみます。
  2. 基本メソッドを試す: getParameterやgetHeaderで、名前やブラウザ情報を受け取る練習をします。
  3. データを画面に返してみる: 入力された値をそのまま画面へ表示すると、動きが実感しやすくなります。
  4. 慣れてきたら応用: セッションやCookieを使った基本的な状態管理にも進めます。

例えば「名前を入力して表示するだけ」の小さなプログラムでも十分練習になります。 入力した値がそのまま返ってくるだけで、リクエスト処理のイメージがつかめます。


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

        // 入力フォーム ?name=○○ の値を受け取る
        String name = request.getParameter("name");
        if (name == null || name.isBlank()) {
            name = "名無し";
        }

        response.setContentType("text/plain; charset=UTF-8");
        response.getWriter().println("入力された名前は「" + name + "」です!");
    }
}

ブラウザのアドレス欄で /helloName?name=Hanako と入力して動きを確かめてみましょう。 小さな成功体験が積み重なるほど、後で出てくる仕組みの理解がぐっと楽になります。

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

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

Webアプリケーションでは、画面から値を入力してサーバーへ送る処理がよく登場します。 そのとき、実際に入力されたデータを受け取ってくれるのがHttpServletRequestです。 ブラウザで入力した内容が、Servlet側のJavaコードでそのまま読み取れるようになります。

まずは「ユーザーIDとパスワードを送信するフォーム」を見てみましょう。特別な設定は不要で、 name属性を付けておけば、Java側がその値を取得できる仕組みです。


<form action="/login" method="POST">
    <input type="text" name="userId" placeholder="ユーザーID">
    <input type="password" name="password" placeholder="パスワード">
    <button type="submit">ログイン</button>
</form>

上のフォームが送信されると、サーバー側のServletで次のように受け取れます。 ここでは、未入力でも落ちないように簡単なチェックを入れています。


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

if (userId == null || userId.isBlank()) {
    userId = "未入力";
}
if (password == null || password.isBlank()) {
    password = "未入力";
}

response.getWriter().println("入力されたID:" + userId);
response.getWriter().println("入力されたパスワード:" + password);

フォームで書いたname="userId"と name="password"がそのまま引き渡されていることが分かります。 入力値を確認しながら動かすと、フォームとサーバー処理の関係がはっきり理解できます。 小さなフォームから試していくと、ログイン画面や問い合わせページの仕組みが自然と身についていきます。

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アドレスなど)を取得できるクラスです。初心者にも扱いやすく、基本を理解すればすぐに使えます。

Java Servletでフォームから送られた値を取得する方法は?

HTMLフォームのname属性を使って、Java側のHttpServletRequestクラスでgetParameterメソッドを使えば値を取得できます。

HttpServletRequestでgetParameterとgetParameterValuesの違いは?

getParameterは1つの値を取得する場合に使い、getParameterValuesはチェックボックスのように複数の値を配列として取得する場合に使います。

JavaでIPアドレスを取得したいときはどうすればいい?

HttpServletRequestのgetRemoteAddrメソッドを使うことで、アクセス元のクライアントIPアドレスを取得できます。
生成AIを基礎から学びたい方へ

ChatGPTなどの生成AIをこれから学びたい方に向けて、AIスキルアカデミーの口コミ・評判、料金、無料セミナーの内容を詳しくまとめています。

AIスキルアカデミーの口コミ・評判を詳しく見る
カテゴリの一覧へ
新着記事
New1
Java
JavaのassertFalseとは?JUnit5のAssertionsクラスを初心者向けにわかりやすく解説
新規投稿
New2
Thymeleaf
ThymeleafでDBから取得したデータを編集フォームの初期値にセットする方法!Entity連携を初心者向けに解説
新規投稿
New3
Spring
JavaのSpringで使う@FutureOrPresentアノテーションを完全ガイド!初心者でもわかる日付バリデーション
新規投稿
New4
Java
JavaのLocalDateクラスのgetMonthValueメソッド完全ガイド!初心者でもわかる数値で月を取得する方法
新規投稿
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaサーブレットのdoPostメソッドとは?初心者向けにやさしく解説!
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpServletResponseクラスを初心者向けに徹底解説!
No.3
Java&Spring記事人気No3
Servlet
JavaのHttpServletRequestWrapperとgetSessionメソッドの使い方を徹底解説!初心者向けServletのセッション管理入門
No.4
Java&Spring記事人気No4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
Servlet
JavaのHttpSessionインターフェースとgetSessionContextメソッドを徹底解説!初心者でもわかるセッション管理の基本
No.6
Java&Spring記事人気No6
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionAttributeListenerとattributeRemovedメソッドの使い方を徹底解説!初心者でもわかるセッション属性の削除と監視
No.8
Java&Spring記事人気No8
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎