24.4.9 javax.servlet.http.HttpServletResponse
javax.servlet.http.HttpServletResponseはServlet仕様で定義されているクラスです。
ルートリソースクラスのフィールドにインジェクトされるjavax.servlet.http.HttpServletResponseの使用例を次に示します。
package com.sample.resources; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; //ルートリソースクラス @Path("/root") public class Resource { //Contextアノテーションを使用してHttpServletResponseをインジェクトするフィールド private @Context HttpServletResponse httpResponse; //リソースメソッド @GET public void getValue() throws IOException { String entity = "Response mentioned using HttpServletResponse"; httpResponse.setHeader("abc","xyz"); httpResponse.getOutputStream().write(entity.getBytes()); httpResponse.getOutputStream().flush(); httpResponse.getOutputStream().close(); return ; } }
ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"example"で,Webアプリケーションが"sample.com"というホストで公開されているとします。この例で,URL"http://sample.com/example/root"に対するHTTP GETリクエストでは,まずHttpResponseフィールドにjavax.servlet.http.HttpServletResponseがインジェクトされ,その後HTTP GETリクエストを処理できるgetValue()メソッドが呼び出されます。このため,HttpResponseクラスが応答の構築に使用される個所と,ルートリソースクラスcom.sample.resources.ResourceのgetValue()メソッドは同じになります。