簡單易懂的現代魔法——Play Framework攻略3

接前文:http://www.cnblogs.com/Kassadin/p/4343682.htmlhtml

目前爲止,咱們已經研究了Play Framework的體系結構以及Web應用程序的工做原理。原本今天的內容是想討論一下REST架構和Restful Web Service的,正在我學習相關姿式準備開坑之時,我忽然想起了當年學習JSP的情景。想當年剛學JSP的時候,第一次的做業是寫一個登陸頁面,如今學了Play Framework,不妨把當年的做業重寫一遍,因而今天討論的內容就是:使用Play Framwork開發登陸頁面。java

1.需求定義

基本需求:基於Play Framework開發一個web登陸頁面(version1)web

業務流程:數據庫

(1)用戶在網頁輸入用戶名和密碼編程

(2)服務器驗證用戶名,密碼瀏覽器

(3)根據驗證結果,跳轉到新的頁面,並顯示驗證結果信息。服務器

特殊說明:架構

(1)爲了簡化需求,該版本的用戶名和密碼寫死在程序中,在下一個版本(version2)中,用戶名和密碼信息將存儲在數據庫中。app

(2)在學習了Web Service以後,能夠發佈一個login web service(version3),這樣經過提供服務,能夠方便其餘平臺調用,實現Android端登陸功能(version4)編程語言

(3)version2-4會在本系列以後陸續更新

2.項目實戰

2.1 新建項目

首先切換到工做目錄下,經過終端創建新項目:

activator new

模板選擇:5.play-java

輸入項目名稱:login

cd login

這樣,咱們就創建了一個叫login的新項目,選擇了java做爲編程語言;(scala版本我也試着寫了一下,雖然功能實現了,可是有一部分代碼我也不能講的十分清楚,所以就不放在這裏了)

2.2 修改conf/routes文件

現假設我要打開的登陸頁面url是:http://localhost:9000/login, 當客戶在瀏覽器輸入這個url時,咱們必須在routes定義該GET方法的action,具體而言就是要在routes文件里加入以下代碼:

image

咱們將這個GET請求交給Application中的login方法處理,因爲如今改方法尚未定義,咱們如今須要定義該方法。

2.3 修改controller

在app/controllers/Application.java文件的Application類內新增靜態方法login,該方法將定向到login視圖,並將參數傳遞給View

public class Application extends Controller {

    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }

    public static Result login() {
        return ok(login.render("請輸入用戶名和密碼:"));
    }
}

image

代碼中login方法將定向到login視圖,而此時login視圖尚未定義,因而咱們須要在app/views中新建login.scala.html文件。

2.4 定義view

image

在app/views中新建login.scala.html文件,這樣便於controller中login方法定義的跳轉頁面一致,即可以完成跳轉。如今編寫頁面html代碼以下:

@(loginmessage:String)

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>login</title>
</head>
<body>
    <h2>@loginmessage</h2>
    <form method="post" name="login">
        用戶名:<input type="text" name="username">
        密碼:<input type="password" name="password">
        <input type="submit" value="提交">
    </form>
</body>
</html>

在view中,咱們定義了一個變量loginmessage用於接收login Action提交過來的參數:請輸入用戶名和密碼;接着,咱們定義了一個表單,提交方式爲POST,表單中包含用戶名和密碼2個input。這樣咱們的表單就定義好了。

2.5 第一次測試

下面咱們測試一下目前的工做成果;終端輸入activator run,打開服務器;在瀏覽器端輸入url:http://localhost:9000/login,顯示以下頁面:

image

目前爲止,一塊兒順利,固然當你點提交時會報錯以下:

image

錯誤的緣由很簡單,咱們尚未定義表單POST的Action,因而咱們繼續。

2.6 添加routes

image

2.7 添加controller

在app/controllers/Application.java文件的Application類內新增靜態方法loginPost,該方法用於接收post請求參數,進行登陸判斷,並定向到新頁面。

public class Application extends Controller {

    public static Result index() {
        return ok(index.render("Your new application is ready."));
    }

    public static Result login() { return ok(login.render("請輸入用戶名和密碼:"));}

    public static Result loginPost() {

        DynamicForm requestData = Form.form().bindFromRequest();
        String username = requestData.get("username");
        String password = requestData.get("password");

        String result;
        if(username.equals("kirigiri") && password.equals("123456"))
        {
            result = "登陸成功";
            return ok(post.render(result));
        }
        else
        {
            result = "用戶名或密碼錯誤,請從新輸入";
            return ok(login.render(result));
        }

    }
}

image

該方法第一部分用於接收POST來的表單數據,第二部分用於登陸判斷,咱們默認正確的用戶名爲:kirigiri,密碼爲:123456;若是表單輸入正確則跳轉到post頁面,並顯示登錄成功;若是判斷錯誤就返回登錄界面,並提示從新輸入。

2.8 添加view

在app/views中新建post.scala.html文件,代碼以下:

@(loginresult:String)
<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<h2>@loginresult</h2>
</body>
</html>

2.9 測試運行

終端輸入activator run打開服務器,並在瀏覽器輸入http://localhost:9000/login進行測試。

【1】正確的輸入

imageimage

【2】錯誤的輸入

imageimage

測試結果符合預期,開發結束。

3.後記

到此爲止,咱們的登陸頁面(version1)就算是完成了,固然了這個項目還很是的簡陋,在從此的版本中會進行逐步完善,敬請期待。

使用Play Framework進行Web開發,應該抓住MVC模式這個基本思想,只要掌握了這個基本思想,很快就能用Play Framework開發出Web頁面。

下次咱們將回歸正題,探討另外一個很是核心的主題:REST架構與基於Play的Restful Web Service

相關文章
相關標籤/搜索