<ヘッダ部のファイル出力>

POSTリクエストのヘッダ部を指定のファイルへ、「ヘッダ名:内容」の形式で出力します。
ヘッダ部は、HttpServletRequest#getHeaderNames()HttpServletRequest#getHeader()で取得します。

public static void dumpHeader(HttpServletRequest request, String file) throws IOException { //出力用のストリーム FileOutputStream fos = new FileOutputStream(file); PrintWriter out = new PrintWriter(fos); //POSTリクエストのヘッダ部分を取得する Enumeration header = request.getHeaderNames(); while ( header.hasMoreElements()) { String name = (String) header.nextElement(); String value = request.getHeader(name); out.println(name + ": " + value); } out.println(""); out.flush(); out.close(); } (使い方) ・ ・ ServletContext context = getServletConfig().getServletContext(); String file = context.getRealPath("header.txt"); FileUtil.dumpHeader(request, file); ・ ・

<リクエスト内容のファイル出力>

HttpServletRequest#getInputStream()を使うと、HTTPのPOSTリクエストで送信されてきた本体(content)部分の生データの読み出しができます。
フォームからの入力ではなく、直接データをcontentとして送信してくるアプリケーションの場合や、日本語の文字化け/意図しないキャッシュ処理のデバッグなどに使えます。
なお、getInputStream()メソッドを呼んだ後は、同じServeltRequestオブジェクトに対して、getParameter()やgetParameterValues()は呼べません。(逆も同じ)

public static void dumpRequest(HttpServletRequest request, String file) throws IOException { //POSTリクエストの本体部分を読み込むためのストリーム InputStream in = request.getInputStream(); //出力用のストリーム FileOutputStream out = new FileOutputStream(file); int c; while (( c = in.read()) != -1) { out.write(c); } in.close(); out.close(); } (使い方) ・ ・ ServletContext context = getServletConfig().getServletContext(); String file = context.getRealPath("header.txt"); FileUtil.dumpRequest(request, file); ・ ・