HttpServeretRequestとHttpServeretResponse(1)

5780 ワード

.1.7 HttpServeretRequestとHttpServeretResponse(1)
javaxでservlet.httpパッケージでは、HttpServertRequestとHttpServertResponseの2つのインタフェースが定義されています.この2つのインタフェースはjavaxからそれぞれ継承する.servlet.サーブレットRequestとjavax.servlet.サーブレットResponseインタフェース.HttpServiceletRequestインタフェースに追加された一般的な方法は、次のとおりです.
public java.lang.String getContextPath()

要求URIのうち要求コンテキストを表す部分を返し、コンテキストパスは要求URIの開始部分である.コンテキストパスは常にスラッシュ(/)で始まりますが、最後にスラッシュ(/)はありません.デフォルト(ルート)コンテキストでは、このメソッドは空の文字列""を返します.たとえば、要求URIは「/sample/test」であり、このメソッドを呼び出すとパスは「/sample」に戻ります.
public Cookie[] getCookies()

クライアントが今回のリクエストで送信したすべてのCookieオブジェクトを返します.
public java.lang.String getHeader(java.lang.String name)

名前がnameのリクエストヘッダの値を返します.リクエストに指定した名前のヘッダが含まれていない場合、このメソッドはnullを返します.
public java.util.Enumeration getHeaderNames()

今回のリクエストに含まれるすべてのヘッダ名の列挙セットを返します.
public java.util.Enumeration getHeaders(java.lang.String name)

名前がnameのリクエストヘッダのすべての値の列挙セットを返します.
public java.lang.String getMethod()

このリクエストで使用したHTTPメソッドの名前を返します.たとえば、GET、POST、PUTなどです.
public java.lang.String getPathInfo()

クライアントから送信された要求URLに関連付けられた追加のパス情報を返します.追加のパス情報は、サーブレットのパスの後、文字列をクエリーする前のパスであり、スラッシュ(/)文字で開始します.例えば、web.xmlファイルのMyServeretクラスマッピングのURLは:/myservlet/*、ユーザーが要求したURLは:http://localhost:8080/ch 02/myservlet/test、HttpServiceletRequestオブジェクトでgetPathInfo()を呼び出すと、このメソッドは/testを返します.追加のパス情報がない場合、getPathInfo()メソッドはnullを返します.
public java.lang.String getPathTranslated()

追加のパス情報を実際のパスに変換します.例えば、上記の例では、ch 02 WebアプリケーションがD:/openSource/apache-tomcat-6.0.16/webapps/ch 02ディレクトリにあると仮定し、ユーザが要求するとhttp://localhost:8080/ch 02/myservlet/testの場合、要求オブジェクト上でgetPathTranslated()メソッドを呼び出すと、D:/openSource/apache-tomcat-6.0.16/webapps/ch 02/testが返されます.
public java.lang.String getQueryString()

パス後のリクエストURLのクエリ文字列を返します.URLにクエリー文字列がない場合、このメソッドはnullを返します.たとえば、次のような要求URLがあります.
http://localhost:8080/ch02/logon.jsp?action=logon

getQueryString()メソッドを呼び出すとaction=logonが返されます.
public java.lang.String getRequestURI()

リクエストURLのホスト名からクエリー文字列までの部分を返します.例:
               
POST /some/path.html HTTP/1.1    /some/path.html
GET http://foo.bar/a.html HTTP/1.0   /a.html
HEAD /xyz?a=b HTTP/1.1     /xyz
  public java.lang.StringBuffer getRequestURL()
クライアントが要求を開始するためのURLを再構築します.返されるURLには、プロトコル、サーバの名前、ポート番号、およびサーバのパスが含まれますが、クエリー文字列パラメータは含まれません.
リクエストがRequestDispatcherを使用する場合に注意してください.forward(サーブレットリクエスト、サーブレットResponse)メソッドが別のサーブレットに転送されると、このサーブレットでgetRequestURL()を呼び出し、元のリクエストURLではなくRequestDispatcherオブジェクトを取得する際に使用されるURLが得られます.
public java.lang.String getServletPath()

要求URIでサーブレットを呼び出す部分を返します.このセクションのパスは、サーブレットの名前またはパスを含むスラッシュ(/)で始まりますが、追加のパス情報およびクエリー文字列は含まれません.例えば、web.xmlファイルのMyServeretクラスマッピングのURLは:/myservlet/*、ユーザーが要求したURLは:http://localhost:8080/ch 02/myservlet/test、HttpServletRequestオブジェクトでgetServletPath()を呼び出すと、このメソッドは/myservletを返します.要求を処理するサーブレットがURLスタイル'/*'と一致する場合、このメソッドは空の文字列(')を返します.
public HttpSession getSession()

このリクエストに関連付けられたセッションを返し、クライアントにセッションが割り当てられていない場合は新しいセッションを作成します.
public HttpSession getSession(boolean create)

このリクエストに関連付けられたセッションを返します.クライアントにセッションが割り当てられず、createパラメータがtrueの場合、新しいセッションが作成されます.createパラメータがfalseであり、今回のリクエストに有効なHttpSessionがない場合はnullを返します.
HttpServeretResponseインタフェースでは、次のような一般的な方法が追加されました.
public void addCookie(Cookie cookie)

応答にCookieを追加します.この方法は複数のCookieを設定するために複数回呼び出すことができる.
public void addHeader(java.lang.String name, java.lang.String value)

 
2.1.7 HttpServeretRequestとHttpServeretResponse(2)
与えられたnameとvalueを用いて,応答ヘッダを応答に追加した.
public boolean containsHeader(java.lang.String name)

nameという名前のレスポンスヘッダが設定されているかどうかを判断します.
public java.lang.String encodeRedirectURL(java.lang.String url)

SessionIDを使用してリダイレクト用urlをエンコードし、sendRedirect()メソッドで使用します.urlが符号化を必要としない場合は、変更されていないurlが返されます.(この方法の使用については、5章を参照)
public java.lang.String encodeURL(java.lang.String url)

SessionIDを使用して指定したurlをエンコードします.urlが符号化を必要としない場合は、変更されていないurlが返されます.(この方法の使用については、5章を参照)
public void sendError(int sc) throws java.io.IOException

パラメータscで表されるステータスコードを使用して、キャッシュをクリアしながらクライアントにエラー応答を送信します.応答がコミットされた場合、このメソッドはIllegalStateException例外を放出します.
public void sendError(int sc, java.lang.String msg)
throws java.io.IOException

指定したステータスコードを使用して、クライアントにエラー応答を送信します.サーバのデフォルトでは、指定したメッセージを含むサーバ側エラーページがレスポンスとして作成され、コンテンツタイプが「text/html」に設定されます.Webアプリケーションが指定したステータスコードに対応するエラーページを宣言した場合、サーバはパラメータmsgで指定したエラーメッセージを無視してこのページをクライアントに送信します.応答がコミットされた場合、このメソッドはIllegalStateException例外を放出します.
public void sendRedirect(java.lang.String location)
throws java.io.IOException

一時的なリダイレクト応答をクライアントに送信し、クライアントに新しいURLにアクセスさせる.指定された場所が相対URLである場合、サーブレットコンテナは、応答をクライアントに送信する前に、相対URLを絶対URLに変換する必要があります.応答がコミットされた場合、このメソッドはIllegalStateException例外を放出します.
public void setHeader(java.lang.String name, java.lang.String value)

与えられたnameとvalueで応答ヘッダを設定します.このヘッダが設定されている場合、新しい値は前の値を上書きします.
public void setStatus(int sc)

レスポンスのステータスコードを設定します.
また、HttpServeretResponseインタフェースでは、HTTP/1.1のエラーコードに対応するHTTPエラーコードを表す整数型の静的定数のセットも定義されている.これらのエラーコード定数については、HttpServeretResponseインタフェースのAPIドキュメントを参照してください.
HttpServiceletRequestとHttpServiceletResponseの使用をよりよく理解するには、HTTPプロトコルと組み合わせて、互いに照合する必要があります.HTTPプロトコルの紹介は付録Bを参照.