1.下载安装包并安装:
(1)登录http://www.playframework.org/ 直接点击Download链接,下载.zip文件。选择版本play-1.4.2.zip
(2) 直接解压该文件,获得一个文件夹。PATH环境变量指向该文件夹。Path=D:\Programes\Play\play-1.4.2
(3)解压后的文件夹包含一些目录:
documentation:包括一些manual和api文档,保证我们在离线情况下可以参考。
samples:一些常用功能的实现例子项目。
(4)验证安装:
使用windows + R 键,打开命令行,输入play命令,得到如下界面:
play
获取命令行帮助:
play help
2.创建项目:
在命令行界面,切换到想要创建项目的目录,输入命令:
play new helloworld
play new 命令在当前路径下创建了一个helloworld目录,其中包含一系列文件和目录,重要的目录和文件介绍:
app/ 包含应用核心,分为models,controllers和views目录。放置java代码位置。
conf/包含应用的所有配置。application.conf应用主配置.routes定义url路由规则,messages国际化用。
public/包含所有外部可访问的资源:js,css和p_w_picpath。
test/包含所有应用的测试程序。测试程序基于JUnit或Selenium。
3.运行项目:
(1)通过命令行方式进入应用的目录(Application):
play run helloworld
打开浏览器键入http://localhost:9000 ,应用显示了一个缺省的欢迎页:
(2)代码分析:
应用的主入口点配置在conf/routes文件中。它定义了应用所有可访问的URL。第一行配置:
GET / Application.index
它告诉Play,当/路径收到GET请求后调用Application.indexJava方法。它是controllers.Application.index的缩写,因为controllers包是隐式的附加的。
创建标准Java应用时,通常使用一个入口点即main方法。Play应用则有多个,一个URL一个。这些方法称为action方法。定义action方法的类称为controller。
4.使用Eclipse IDE:
(1)使用eclipsify命令将一个play应用变为Eclipse项目。
play eclipsify helloword
在执行上命令时,先切换到hellworld项目文件夹的上一级目录,例如我的是:
cd D:\java_workdir\play_workspace
(2)将生成的项目导入到eclipse中去(Existing Project into Workspace):
生成的项目结构如下:
(3)在生成的launchers:
在eclipse项目中,可以看到一个eclipse文件夹,这里边包括eclipsify命令为我们生成的3个lanchu文件,下面逐一介绍:
a.helloworld.launch:主launch文件,执行时,相当于执行命令play run。执行方法:右键该文件,选择 Run As > helloworld
b.Test helloworld.launch:相当于play test命令。执行方法:右键该文件,选择 Run As > Test helloworld
c.Connect JPDA to helloworld.launch:连接Eclipse Debugger到一个已经运行的play实例,并且启动debugging session。执行方法:右键该文件,选择 Debug As > Connect JPDA to helloworld。
(4)安装Play的Eclipse插件:
将目录$PLAY_HOME/support/eclipse下的jar文件,拷贝到$ECLIPSE_HOME/dropins目录。
5.使用项目:
5.1 创建表单:
修改文件:helloworld/app/views/Application/index.html:
#{extends 'main.html' /} #{set title:'Home' /}
@{…}标志触发Application.sayHello action。由于不存在action Application.sayHello,所以会报错。下面创建该action:
package controllers; import play.*; import play.mvc.*; import java.util.*; import models.*; public class Application extends Controller { public static void index() { render(); } public static void sayHello(String myName) { render(myName); } }
增加了sayHello方法,action方法中定义了参数myName,所以该方法的值会被传入HTTP请求myName参数的值。如下:http://xxx?myName=xxx。
需要建相应的html文件,helloworld/app/views/Application/sayHello.html。
#{extends 'main.html' /} #{set title:'Home' /}Hello ${myName ?: 'guest'}!
Back to Form
Groovy的表达式:?: 。 如果myName参数没有赋值的话,提供一个默认值。