![Lv.4 Responseをいじってみよう。[play framework2.0] [java]](https://soylatte.jp/wp-content/themes/soy-magazine/assets/images/no-thumbnail.png)
レスポンスは、Controllerクラスからresponse()メソッドを呼ぶことで取得できます。
play.mvc.HTTP.Responseクラスが取得できます。
このresponse()やResultに情報を追加・削除することで、かなり柔軟にレスポンスをいじる
ことができます。
目次
Content-Typeをいじる
変える方法は3種類。
自動変更
たとえばok()などのResultを生成するメソッドによって、自動で変更される。
[java toolbar=”false”]
//text/plain
Result textResult = ok(“Hello World!”);
//text/plain
Result textResult = ok(“Hello World!”);
//application/json
Result jsonResult = ok(jerksonObject);
[/java]
Resultのas()メソッド
[java toolbar=”false”]
Result htmlResult = ok(“
Result htmlResult = ok(“
Hello World!
“)
.as(“text/html”);
[/java]
レスポンスに指定する
[java toolbar=”false”]
public static Result index() {
response().setContentType(“text/html”);
return ok(“
public static Result index() {
response().setContentType(“text/html”);
return ok(“
Hello World!
“);
}
[/java]
HTTPレスポンスのヘッダーをいじる
レスポンスに指定すれば何でも追加できる。
[java toolbar=”false”]
public static Result index() {
response().setContentType(“text/html”);
response().setHeader(CACHE_CONTROL, “max-age=3600”);
response().setHeader(ETAG, “xxx”);
return ok(“
public static Result index() {
response().setContentType(“text/html”);
response().setHeader(CACHE_CONTROL, “max-age=3600”);
response().setHeader(ETAG, “xxx”);
return ok(“
Hello World!
“);
}[/java]
以下のコードでheadernamesも書き出せます。
[java toolbar=”false”]
Map map = response().getHeaders();
Set set = map.keySet();
for (String key : set)
System.out.println(key + “:” + map.get(key));
[/java]
Map
Set
for (String key : set)
System.out.println(key + “:” + map.get(key));
[/java]
その他のヘッダーをまとめておきます。
play.mvc.HTTPにpublic static interface HeaderNamesとして記述されています。
変数名 | 内容 |
---|---|
ACCEPT | “Accept” |
ACCEPT_CHARSET | “Accept-Charset” |
ACCEPT_ENCODING | “Accept-Encoding” |
ACCEPT_LANGUAGE | “Accept-Language” |
ACCEPT_RANGES | “Accept-Ranges” |
AGE | “Age” |
ALLOW | “Allow” |
AUTHORIZATION | “Authorization” |
CACHE_CONTROL | “Cache-Control” |
CONNECTION | “Connection” |
CONTENT_ENCODING | “Content-Encoding” |
CONTENT_LANGUAGE | “Content-Language” |
CONTENT_LENGTH | “Content-Length” |
CONTENT_LOCATION | “Content-Location” |
CONTENT_MD5 | “Content-MD5” |
CONTENT_RANGE | “Content-Range” |
CONTENT_TRANSFER_ENCODING | “Content-Transfer-Encoding” |
CONTENT_TYPE | “Content-Type” |
COOKIE | “Cookie” |
DATE | “Date” |
ETAG | “Etag” |
EXPECT | “Expect” |
EXPIRES | “Expires” |
FROM | “From” |
HOST | “Host” |
IF_MATCH | “If-Match” |
IF_MODIFIED_SINCE | “If-Modified-Since” |
IF_NONE_MATCH | “If-None-Match” |
IF_RANGE | “If-Range” |
IF_UNMODIFIED_SINCE | “If-Unmodified-Since” |
LAST_MODIFIED | “Last-Modified” |
LOCATION | “Location” |
MAX_FORWARDS | “Max-Forwards” |
PRAGMA | “Pragma” |
PROXY_AUTHENTICATE | “Proxy-Authenticate” |
PROXY_AUTHORIZATION | “Proxy-Authorization” |
RANGE | “Range” |
REFERER | “Referer” |
RETRY_AFTER | “Retry-After” |
SERVER | “Server” |
SET_COOKIE | “Set-Cookie” |
SET_COOKIE2 | “Set-Cookie2” |
TE | “Te” |
TRAILER | “Trailer” |
TRANSFER_ENCODING | “Transfer-Encoding” |
UPGRADE | “Upgrade” |
USER_AGENT | “User-Agent” |
VARY | “Vary” |
VIA | “Via” |
WARNING | “Warning” |
WWW_AUTHENTICATE | “WWW-Authenticate” |
クッキーをいじる
[java toolbar=”false”]
//クッキーも簡単に設定できる。
response().setCookie(“theme”, “blue”);
//クッキーも簡単に設定できる。
response().setCookie(“theme”, “blue”);
//消去も。
response().discardCookies(“theme”);
[/java]
エンコーディングをいじる
デフォルトはutf-8です。
ContentTypeに「;charset=xxx」を追記することで指定できます。
[java toolbar=”false”]
public static Result index() {
response().setContentType(“text/html; charset=iso-8859-1”);
return ok(“
public static Result index() {
response().setContentType(“text/html; charset=iso-8859-1”);
return ok(“
Hello World!
“, “iso-8859-1”);
}[/java]
アセスメント
- Content-typeをtext/htmlにする方法が分かる
- レスポンスのヘッダーにCACHE_CONTROLを設定する方法が分かる
- エンコーディングをiso-8859-1に設定する方法が分かる
今回参照しているplayフレームワーク2.0の公式ドキュメントは、
Manipulating the response
です。