Servlet/JSP 応用編02 HTTPのリクエスト

はじめに

今回は、HTTPのリクエストについて解説していこうと思う。普通は、HTTPのリクエストの情報は隠されていて、直接操作することはない。しかし、デバッグの際に問題解決に役立つことがある。
これを利用すれば、POSTリクエストの内容も、メッセージとして表示される。

メソッド

様々な情報を取得でき、そのうちのいくつかを紹介しようと思う。
まず、リクエストラインを取得でき、「getMethod」では、リクエストの種類、「getRequestURI」で、リクエストされたURIを取得できる。ヘッダの情報も取得でき、「getHeader」で指定した名前のヘッダフィールドを取得、「getHeaderNames」ですべてのヘッダフィールドの名前を取得できる。

作成するプログラム

リクエスト情報を取得するサーブレットを作成する。こういう機能があるのだなと思っていたければよい。

 public void doGet(HttpServletRequest request , HttpServletResponse response)
     throws ServletException , IOException{
        PrintWriter out = response.getWriter();
        Page.header(out);

        out.println("<p>Request URL<br>"+
            request.getRequestURL()+"</p>");

        out.println("<p>Host<br>"+
            request.getHeader("Host")+"</p>");

        out.println("<p>User-Agent<br>"+
            request.getHeader("User-Agent")+"</p>");

        out.println("<p>Remote Address<br>"+
            request.getRemoteAddr()+"</p>");

        Page.footer(out);
    }

 requestクラスのメソッド「getRequestURL」「getHeader」「getRemoteAddr」を使用している。HostとUser-Agentのヘッダ情報を取得しており、Hostは、サーバの情報、User-Agentは、ブラウザの種類を表す。「getRemoteAddr」はリクエスト送信元、つまり、ユーザのIPアドレスを表示する。

実行結果は以下のようになった。

f:id:kouki-matsuura:20200908175422p:plain

ちゃんと表示されていることが分かる。

おわりに

今回は簡単にHTTPリクエストについて紹介した。次回はサーブレット/JSPとは一瞬ずれて、「データベース」について紹介したいとおもう。