JavaのHttpServletRequestクラスを初心者向けに徹底解説!
生徒
「JavaでHttpServletRequestっていうのを見たんですけど、これって何をするクラスなんですか?」
先生
「HttpServletRequestは、クライアントから送られてきたリクエスト情報を取得するためのクラスです。例えば、リクエストのパラメータやヘッダー情報、セッション情報などを扱うことができます。」
生徒
「リクエストの情報って具体的にどんなものがあるんですか?」
先生
「リクエストパラメータやURL、ヘッダー、Cookieなど、Webアプリケーションで必要な情報が含まれています。では、具体的に使い方を見ていきましょう!」
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クラスとは?
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の主なメソッド
HttpServletRequestクラスが提供する主なメソッドを以下に示します:
- getParameter(String name):リクエストパラメータの値を取得します。
- getHeader(String name):HTTPヘッダーの値を取得します。
- getCookies():クライアントが送信したCookieを取得します。
- getSession():現在のセッションを取得します。
- getRemoteAddr():クライアントのIPアドレスを取得します。
これらのメソッドを組み合わせることで、クライアントからのリクエスト情報を効率的に処理できます。
4. HttpServletRequestを学ぶポイント
HttpServletRequestクラスを学ぶ際には、以下のポイントを押さえると理解が深まります:
- リクエストの流れを理解する:クライアントからサーバーへのデータ送信がどのように処理されるかを学びましょう。
- 基本的なメソッドを使いこなす:getParameterやgetHeaderを使ってリクエスト情報を取得する練習をしましょう。
- 応用的な処理に挑戦する:セッションやCookieを使ったユーザー管理を実装してみましょう。
- Servlet全体の理解を深める:HttpServletRequestとHttpServlet、HttpServletResponseの関係性を把握しましょう。
まずは簡単なサンプルコードを実行し、リクエストの仕組みを体験してみてください。
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. セッション管理とリクエストの関係
HttpServletRequestは、ただデータを受け取るだけではなく、 ユーザーの状態を覚えておく「セッション管理」にも利用されます。
Webは通常「1回アクセスしたら終了」という仕組みですが、セッションを使うことで 「ログイン中」「買い物カゴに商品が入っている」などの情報を保持できます。
HttpSession session = request.getSession();
session.setAttribute("loginUser", userId);
セッションはログイン機能を作るときの基本中の基本です。
HttpServletRequestの役割はとても大きいことがわかりますね。
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やセッションはユーザー管理や認証において重要な役割を果たしますので、次回はそれについて詳しく解説しましょう!」