下载安装jdk1.5以上,我用的是1.7

然后下载play-1.2.7,版本可用别的,将play的根目录直接添加到环境变量Path

打开命令行 输入“play new test”(名字自定义)

然后会提示是否确认你的项目名,直接enter

再输入 “play run test”

打开 eclipse import项目,会出现很多文件夹,play框架运用的是MVC模式

初学Play Framework(一)

app文件夹便存放了Model、 View、Controller这三层

app/controllers 

 控制器就是一个java类,其中的每个public/static方法都是一个action。一个action方法就是一个java入口点,当接到一个http请求时,就会调用这个action。action方法从http中提取数据,读取或更新model对象,并向http请求者发送一个封装好的response结果。所以controller更像view和model之间的一座桥梁。

app/models

model是一系列完全面向对象语言特征的java类,它包含了数据结构和数据操作。无论何时,model对象都需要存储到持久化存储设备里。一般情况下,它们还包含一些jpa注释和sql语句。

app/views

view为play提供的高效模板,控制器从model层获取一些感兴趣的数据应用到模板,并通过这个模板把数据装饰的特别漂亮。这个包有HTML、JSON,或其它特别用于动态生成model展现的模板文件组成。

conf

这个文件夹中放置了play的配置文件,其中application.conf是play框架的核心配置文件,比如配置数据库,应用程序端口号等基础性的应用程序配置都在这里面。

routes是http请求和该请求调用的应用程序方法之间的映射。

==========================================================================

conf/routes

初学Play Framework(一)

文件中的'#'为注释。

routes文件列出了所有应用程序所需要的路由。

该配置文件的左栏为HTTP方法+URL路径(这种组合就叫作一个路由),右栏为对应的java调用。

如 GET     /                                         Application.index  

GET为http方法,而'/'则表示根目录localhost:9000,所以上面红色代码的意思为访问根目录时(程序运行后的第一个页面)调用Application.java中的index方法

app/controllers/Application.java

初学Play Framework(一)

index调用了一个render()方法,而此时的render()方法则是返回了与java方法index同名的index.html文件,也就是运行程序后在网页中输入localhost:9000会根据ulr调用index方法进而显示index.html

如何运行项目呢?看图

初学Play Framework(一)

右键点击eclipse中的.launch文件,Run As 选择第一个 运行

运行成功控制栏中会显示 Server is up and running

初学Play Framework(一)

然后进入浏览器输入lcalhost:9000 则会显示下面页面

初学Play Framework(一)

是因为我们的index.html页面还没有写任何内容

app/view/Application/index.html

初学Play Framework(一)

#{welcome /}就是我们上一个图片显示的页面,如果删掉则运行后的页面会变成空白。

而#{extends 'main.html' /}表示index页面继承自main.html

初学Play Framework(一)

可以看到main.html里定义了一些共通的元素,如所用的css和js库等。

通过继承的方式,可以使得模板的复用性大大增强。

#{doLayout /} 指示index.html的内容是插入此处的。

接下来就编辑index.html

初学Play Framework(一)

我们把#{welcome /}删除掉了,写了一个 form,其中@{}的作用是自动生成可以调用Application.sayHello  action的URL

在routes中可以表示为 GET /Application/sayHello         Application.sayHello

运行程序后我们会调用Application.sayHello,但是我们没有sayHello方法,所以去Application.java加上这个方法

初学Play Framework(一)

在form中我们通过submit提交自己的姓名,调用action,找到sayHello方法通过render将我们的名字上传到http,但是上传到上面之后却没有页面去显示这个数据,所以我们需要写一个同名sayHello.html来显示信息。

app/views/Application/sayHello.html

初学Play Framework(一)

通过${}将http中的信息取出,myName?:'Null'意思为先判断myName是否存在,如果不存在就显示Null(当然也可以写其他的),如果存在就显示取出的myName。

测试一下 输入名字lucy

初学Play Framework(一)               初学Play Framework(一)

不输入任何东西

初学Play Framework(一)

可以看到,现在页面的URL为localhost:9000/application/sayhello?myName=lucy

我们也可以在routes中进行优化

初学Play Framework(一)

那么页面URL会显示为

初学Play Framework(一)

添加一些基本校验,编辑Application.java

初学Play Framework(一)

@Required是校验myName是否存在,如果不存在输出Please input your name. 而这些错误信息都是存放在play的flash scope。对了,不要忘记import play.data.validation.*; (我忘记截上了)

 然后重定向到index.html页面上,所以重新编辑index.html页面  

初学Play Framework(一)

如果错误信息存在就从flash scope中取出显示到页面上。

初学Play Framework(一)

对的,就是这样。






相关文章: