Actions, Controllers 和 Results

什么是 Action ?

大部分 Play 應(yīng)用的接收的請(qǐng)求由 action 處理.
一個(gè) action 基本上算是一個(gè) Java 方法, 這個(gè)方法處理請(qǐng)求參數(shù),然后產(chǎn)生一個(gè)結(jié)果發(fā)送給客戶端.

public Result index() { 
    return ok("Got request " + request() + "!");
}

action 返回一個(gè) play.mvc.Result 類型的對(duì)象,用于這個(gè)HTTP的響應(yīng)給web客戶端.這個(gè)例子中的 ok 構(gòu)造了一個(gè) 200 OK 的響應(yīng)碼 和 text/play類型的響應(yīng)body.

Controllers

controllers 只不過是 play.mvc.Controller 這個(gè)類的擴(kuò)展,多了幾組action方法.

package controllers;
import play.*;
import play.mvc.*;

public class Application extends Controller { 

        public Result index() { 
                 return ok("It works!"); 
        }
}

上面的代碼是一個(gè)最簡(jiǎn)單語法.定義了一個(gè)沒有參數(shù),返回值為 Result的action.
當(dāng)然action方法可以有參數(shù):

public Result index(String name) { 
        return ok("Hello " + name);
}

這個(gè)參數(shù)是 Router 從請(qǐng)求的 URL的path或 query string 中解析出來并填充的.

Result

讓我們從一個(gè)簡(jiǎn)單的 Result開始: 一個(gè)HTTP result 有一個(gè) 狀態(tài)嗎,一組HTTP header和一個(gè) body,他們會(huì)被發(fā)送給web 客戶端.
這個(gè)result的定義通過play.mvc.Result. 這個(gè) play.mvc.Result 類提供了一些方法來生成一些標(biāo)準(zhǔn)的HTTP result, 像 我們之前用的 ok 方法:

public Result index() { 
          return ok("Hello world!");
}

這里有一些創(chuàng)建result的例子:

Result ok = ok("Hello world!");Result notFound = notFound();
Result pageNotFound = notFound("<h1>Page not found</h1>").as("text/html");
Result badRequest = badRequest(views.html.form.render(formWithErrors));
Result oops = internalServerError("Oops");
Result anyStatus = status(488, "Strange response type");

所有的這些方法可以在 play.mvc.Results 類中找到.

同樣 重定向 也是一個(gè)簡(jiǎn)單的 Result

重定向?yàn)g覽器到一個(gè)新的 URL 僅僅是另一個(gè)簡(jiǎn)單的result,然而這些result 類型是沒有響應(yīng)body的.
這里有一些方法可以幫助創(chuàng)建一個(gè)重定向的results:

public Result index() { 
        return redirect("/user/home");
}

默認(rèn)的是使用一個(gè) 303 SEE_OTHER 的響應(yīng)類型,但是你也可以更詳細(xì)的指明狀態(tài)嗎:

public Result index() { 
        return redirect("/user/home");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容