JavaのHttpServletRequestWrapperクラスのgetIntHeaderメソッドとは?初心者向けに徹底解説!
生徒
「JavaのServletで、HTTPヘッダーに含まれる数値の値を取得するにはどうすればいいですか?」
先生
「その場合は、HttpServletRequestWrapperクラスのgetIntHeaderメソッドを使うと便利です。」
生徒
「getIntHeaderメソッドってどんなときに使うんですか?」
先生
「それでは、具体的な使い方と一緒に、詳しく見ていきましょう!」
1. getIntHeaderメソッドとは?
getIntHeaderメソッドは、JavaのServletで使用されるHttpServletRequestWrapperクラスに用意されているメソッドで、HTTPリクエストヘッダーの中から指定した名前のヘッダーの値を「整数(int)」として取得するためのものです。
ヘッダー情報は本来文字列として扱われますが、中には数値として意味を持つヘッダーもあります。たとえば、Content-Lengthのように数値で情報が入る場合に使われます。
2. getIntHeaderの基本的な使い方
getIntHeaderメソッドの基本的な使い方はとてもシンプルです。次のように、取得したいヘッダー名を引数に渡します。
int contentLength = request.getIntHeader("Content-Length");
このようにすることで、"Content-Length"ヘッダーの値を整数として取得できます。もしそのヘッダーが存在しない場合は-1が返されます。
3. getIntHeaderメソッドの注意点
getIntHeaderメソッドを使う際には、いくつか注意点があります。
- 指定したヘッダーが存在しない場合、戻り値は
-1になります。 - ヘッダーに数値以外の値が設定されていると、
NumberFormatExceptionが発生します。
そのため、ヘッダー値が整数であることが確実な場合にのみ使うようにしましょう。もしくは、getHeaderで文字列として取得してから自分でInteger.parseIntする方法もあります。
4. 実用例:Content-Lengthヘッダーの取得
以下は、Servlet内で実際にgetIntHeaderメソッドを使ってContent-Lengthの値を取得し、ログに出力する例です。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int contentLength = request.getIntHeader("Content-Length");
System.out.println("リクエストのContent-Lengthは: " + contentLength);
}
このように、クライアントから送られてくるHTTPリクエストヘッダーの数値情報を取得して処理に使うことができます。
5. getIntHeaderを使う場面
getIntHeaderメソッドは次のような場面でよく使われます。
- ファイルアップロードのサイズを取得するとき(Content-Length)
- カスタムヘッダーで数値が設定されている場合
- 条件付きリクエストの検証(例:If-Unmodified-Sinceなど)
HTTPのリクエストヘッダーはクライアントとサーバーの情報のやりとりにおいて重要な役割を果たしています。getIntHeaderを使うことで、その情報の中から数値データを安全に取得できます。
6. HttpServletRequestWrapperとServlet開発の関係
HttpServletRequestWrapperクラスは、HttpServletRequestを継承しており、リクエストオブジェクトをラップして機能を拡張したいときに使用されます。たとえば、入力内容の検査やロギング、セキュリティ制御などのために使われます。
このクラスを使うことで、元のリクエストに対してオーバーライドしながら新たな処理を追加できます。その一環として、getIntHeaderメソッドのようなヘッダー情報取得処理も活用されます。