JAVA:IT TRICK

リクエストヘッダー一覧の取得(getHeaderNames)

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

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

ヘッダの名前リストを取得するにはHttpServletRequestクラスgetHeaderNames()メソッドを使います。また、getHeader()メソッドと組み合わせることで、すべてのヘッダ情報の値も同時に取得することができるようになります。

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

以下はgetHeadersNames()を使用してリクエストに含まれるすべてのヘッダの名前とその値をブラウザに出力するサンプルです。

Sample48123.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

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


public class Sample48123 extends HttpServlet {

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

		PrintWriter out = response.getWriter();
		StringBuffer sb = new StringBuffer();

		sb.append("<html>");
		sb.append("<head>");
		sb.append("</head>");
		sb.append("<body>");
		sb.append("<div>");

		Enumeration headernames = request.getHeaderNames();
		while (headernames.hasMoreElements()){
			String headerName = (String)headernames.nextElement();
			sb.append("<b>");
			sb.append(headerName);
			sb.append(":");
			sb.append("</b>");

			sb.append(request.getHeader(headerName));
			sb.append("<br />");
		}

		sb.append("</div>");
		sb.append("</body>");
		sb.append("</html>");

		out.println(new String(sb));
	}
}

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

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

	<servlet>
		<servlet-name>48123</servlet-name>
		<servlet-class>Sample48123</servlet-class>
	</servlet>

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

</web-app>

ブラウザからこのサーブレットにアクセスするとすべてのヘッダの名前と値が表示されるはずです。