JAVA:IT TRICK

リクエストヘッダーの取得(getHeader)

サーブレットが呼び出された時、クライアントから送られてきたリクエストに含まれる任意のヘッダ情報をを取得する方法について説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

サーブレットが呼び出された時、クライアントから送られてきたリクエストに含まれる任意のヘッダ情報をを取得する方法について説明します。

任意のヘッダ情報を取得するにはHttpServletRequestクラスのgetHeader()メソッドを使います。また、主なヘッダ情報は以下のようなものがあります。

ヘッダ 説明
Accept ブラウザが処理可能なMIMEタイプリスト
Referer 遷移元のWebページURL
Accept-Language ブラウザが対応する言語。
User-Agent クライアントの種類
Host クライアントのホスト情報
Content-Type 送信データのMIMEタイプ。
Content-Length 送信データのバイト数。
Connection クライアントがステートを維持できるか
Cache-Control キャッシュを利用するか

getHeader()メソッドのサンプル

以下はgetHeader()を使用してリクエストの各ヘッダ情報を取得するサンプルです。このサンプルは取得した各ヘッダ情報をブラウザに出力します。

Sample48124.java
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Sample48124 extends HttpServlet {

	public void service(HttpServletRequest request,
			HttpServletResponse response)
	throws IOException, ServletException {

		PrintWriter out = response.getWriter();
		out.println(
			"ACCEPT: " + request.getHeader("ACCEPT") +
			"\n" +
			"REFERER: " + request.getHeader("REFERER") +
			"\n" +
			"ACCEPT-LANGUAGE: " + request.getHeader("ACCEPT-LANGUAGE") +
			"\n" +
			"USER-AGENT: " + request.getHeader("USER-AGENT") +
			"\n" +
			"HOST: " + request.getHeader("HOST") +
			"\n" +
			"CONTENT-TYPE: " + request.getHeader("CONTENT-TYPE") +
			"\n" +
			"CONTENT-LENGTH: " + request.getHeader("CONTENT-LENGTH") +
			"\n" +
			"CONNECTION: " + request.getHeader("CONNECTION") +
			"\n" +
			"CACHE-CONTROL: " + request.getHeader("CACHE-CONTROL"));

	}
}

このサーブレットのweb.xmlでの定義です。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<servlet>
		<servlet-name>48124</servlet-name>
		<servlet-class>Sample48124</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>48124</servlet-name>
		<url-pattern>/48124</url-pattern>
	</servlet-mapping>

</web-app>

ブラウザからこのサーブレットにアクセスすると上記の各ヘッダ情報が表示されるはずです。