处理应答
改变默认内容类型( Content-Type)
result的内容类型会根据你指定的java值自动推断出来
例如:
Result textResult = ok("Hello World!");
这将会自动的设置内容类型为 text/plain
,而:
Result jsonResult = ok(jerksonObject);
将会设置内容类型为 application/json
.
这是十分有用的,如果你想改变它,只需要调用as(newContentType)
方法来创建一个新的result:
Result htmlResult = ok("<h1>Hello World!</h1>").as("text/html");
你也可以设置HTTP应答的内容类型。
public static Result index() {
response().setContentType("text/html");
return ok("<h1>Hello World!</h1>");
}
你可以添加(或更新)任何HTTP应答头:
public static Result index() {
response().setContentType("text/html");
response().setHeader(CACHE_CONTROL, "max-age=3600");
response().setHeader(ETAG, "xxx"); return ok("<h1>Hello World!</h1>");
}
注意 设置HTTP头会覆盖当前的值。
Cookies只不过是HTTP头的特定格式,但是play 提供了一系列便利方法:
你可以很容易给HTTP应答添加一个Cookie:
response().setCookie("theme", "blue");
你也可以删除已有的Cookie:
response().discardCookies("theme");
正确的处理字符编码对于文本类型的HTTP应答是非常重要的,Play默认用 utf-8
.
编码即用于把文本应答转换成相应的网络字节码,也为内容类型头添加恰当的 ;charset=xxx
扩展
你可以在生成 Result
值的时候指定编码:
public static Result index() {
response().setContentType("text/html; charset=iso-8859-1");
return ok("<h1>Hello World!</h1>", "iso-8859-1");
}