【推荐】Play Framework 框架初学者入门

红薯 发布于 2010/07/05 19:44
阅读 9K+
收藏 22

Play!是一个full-stack(全栈的)Java Web应用框架,包括一个简单的无状态MVC模型,具有Hibernate的对象持续,一个基于Groovy的模板引擎,以及建立一个现代Web应用所需 的所有东西。

Play!的关键特性:

1、一个非常简单的开发周期。此框架自动编译和重新装载源文件的任何改变。
2、智能捆绑HTTP参数到Java方法参数。
3、基于Apache Mina的快速HTTP服务器。
4、一个基于Groovy的强大的模板引擎,具有多层继承,定制用户标签的能力,等。
5、优秀的错误报告功能:当发生异常,此框架会直接显示出错代码,甚至是模板代码。
6、集成很多常用的组件包括 HibernateOpenIDMemcached 等一些热门框架

 

在本文中,我们将利用一个简单的 Hello world 应用来了解 Play 框架的基本开发。

 

安装 Play Framework

安装前确认 Java 的版本必须是 5.0 或者更新的版本,下载 Play 框架:http://download.playframework.org/releases/. 目前最新版是 1.0.3 ,下载完解压并设置以下环境变量:

在 Ubuntu 10.04, 我们可以通过以下命令进行设置

PLAY_HOME=/usr/share/apps/play/
PATH=$PATH:$PLAY_HOME
chmod +x PLAY_HOME/play

这些配置值根据你解压的具体路径而定。

设置完毕后,正常的情况下,输入 play 命令可得到下面的输出:

oschina@Linux-Desktop:~$ play
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.0.3, http://www.playframework.org
~
~ Usage: play cmd [app_path] [--options]
~
~ with, new Create a new application
~ run Run the application in the current shell
~ help Show play help
~
oschina@Linux-Desktop:~$

接下来创建一个新的应用程序

Play 的做法很像 Rails,要创建一个新应用请使用下面命令:

play new app_name

这个命令必须在 play 的目录下执行,例如创建一个名为 hello 的应用如下:

oschina@Linux-Desktop:~/dev/play$ play new hello
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.0.3, http://www.playframework.org
~
~ The new application will be created in /home/wichtounet/dev/play/hello
~ What is the application name? Hello World
~
~ OK, the application is created.
~ Start it with : play run hello
~ Have fun!
~
oschina@Linux-Desktop:~/dev/play$

在创建过程中,Play 会询问应用名称,这里我们输入了Hello world 作为项目名,进入刚创建的 hello 目录,你可以看到如下的几个子目录:

  • app : 存放应用本身,包括 java 文件和 html 文件
  • conf : 存放配置文件
  • lib : 包含一些java的jar包
  • public : 存放一些静态文件,例如图片、js和css文件
  • test : 存放测试文件 (JUnit or Selenium)

接下来我们就可以运行这个应用了,输入 play run hello ,运行结果如下所示:

oschina@Linux-Desktop:~/dev/play$ play run hello
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.0.3, http://www.playframework.org
~
~ Ctrl+C to stop
~
Listening for transport dt_socket at address: 8000
17:49:56,395 INFO ~ Starting /home/wichtounet/dev/play/hello
17:49:56,889 WARN ~ You're running Play! in DEV mode
17:49:56,958 INFO ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
17:50:01,670 INFO ~ Application 'Hello World' is now started !

应用启动成功了,打开浏览器访问地址:http://localhost:9000/.  你就可以看到一个运行页面如下:

Play Framework sample page

Play Framework 示例页面

来看看 Play 框架是怎么工作的 ?

打开 conf 目录下的 routes 文件,你可以看到这么一行:

GET / Application.index

该配置表示当请求 / 时,会调用 Application 类的 index 方法,接下来我们打开 app/controllers/Application.java ,就可以看到源码如下:

package controllers;
import play.mvc.*;
 
public class Application extends Controller {
public static void index() {
render();
}
}

这个代码中 index 方法输出了默认的模板,模板文件位于 app/views/Application/index.html ,与类名和方法名完全对应。模板文件如下所示:

#{extends 'main.html' /}
#{set title:'Home' /}
 
#{welcome /}

该模板扩展了 main.html 模板,并设置了页面标题为 Home,然后输出欢迎信息。这些都是 Play 框架为我们提供的一些标签,我们可以稍加修改如下:

#{extends 'main.html' /}
#{set title:'Hello World' /}
 
<h3>Hello the world !</h3>

刷新页面就可以看到浏览器上输出了 Hello the world ! 的信息。接下来我们再在控制器 Application 的 index 方法中增加一些我们自己的代码,如下所示:

public static void index() {
System.out.println("render()");
render();
}

再次刷新页面的时候,我们可以在控制台中看到如下输出信息:

17:50:01,670 INFO  ~ Application 'Hello World' is now started !
render()
render()
render()
render()
render()

增加一个新的页面

假设我们要新增一个页面 /bye ,我们首先要在 conf/routes 文件中增加如下一行:

GET     /bye                                     Application.bye

然后在 Application.java 中增加一个新的方法 bye,如下所示:

package controllers;
 
import play.mvc.*;
 
public class Application extends Controller {
public static void index() {
render();
}
 
public static void bye() {
render();
}
}

最后就是新增模板文件 bye.html ,存放于 app/views/Application 目录下,模板内容如下:

#{extends 'main.html' /}
#{set title:'Bye' /}
 
<h3>Bye bye !</h3>

用浏览器访问 http://localhost:9000/bye 可看到如下输出:

A Bye page in Play Framework

Bye 页面的输出

结论

入门结束,5分钟左右吧?轻松创建应用骨架,轻松增加自己的代码,太轻松了!思路似足 Ruby on Rails 框架。

加载中
0
Turbidsoul
Turbidsoul

play官方有个教程,说定很简明,易懂,当然也需要一点点英文

0
JavaGG
JavaGG

够play的

0
J
Jonliworld

 为java狂!~~

0
d
damao

有点像Spring Roo哦,难道都是受 Ruby on Rails 启发的

0
Kevin.
Kevin.

Windows环境下应该也需要配置环境变量的!试试看。

0
Kevin.
Kevin.

如果让play在google app engine平台上呢?

0
zlcolin
zlcolin

好像要先装python?

0
徐小路
徐小路

引用来自#8楼“help_us”的帖子

好像要先装python?

不用

0
迷失的鱼
迷失的鱼

先从基本的Play看起!

0
风见_隼人
风见_隼人
安装后出现无法加载Files/play/repository是怎么回事啊,求指教
w
wanwan_smart
你的环境变量中有空格吧!还有那个环境变量的变量名中也不要有空格PLAY HOME这样不行,PLAY_HOME这样可以!
返回顶部
顶部