简单易懂的现代魔法——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

相关文章
相关标签/搜索