Hello Play!

    Play包含了它自己的服务器和构建环境。

 

1、获取Play、搭建Play环境

    从http://playframework.org下载最新版的Play 2发行文件,抽取ZIP文件。Play的唯一要求就是要安装了JDK,1.6或更高版本。将此目录加到你的PATH环境变量中去。

    打开命令行,输入play。

 

2、创建并运行一个空应用

    一个Play应用就是一个目录,它里面包含了一个特定的结构,Play用此结构来找到配置、代码以及任何其他它需要的资源。此结构是用play new命令来完成的。

    在命令行中输入 play new hello。按提示去做即可。

    然后是运行此项目:

$ cd hello

$ play run

 

3、Play应用结构

    play new 命令创建了一个默认的应用,带有基本的结构,包括一个最小的HTTP路由配置文件、一个Controller类用于处理HTTP请求,一个view模板、jQuery,以及一个默认的CSS样式表。

 

.gitignore
app/controllers/Application.scala
app/views/index.scala.html
app/views/main.scala.html
conf/application.conf
conf/routes
project/build.properties
project/Build.scala

project/plugins.sbt
public/images/favicon.png
public/javascripts/jquery-1.7.1.min.js
public/stylesheets/main.css
test/ApplicationSpec.scala
test/IntegrationSpec.scala

 

此目录结构对所有的Play应用都很常见。其中的顶级目录将文件进行了如下分组:

■ app—Application source code
■ conf—Configuration files and data
■ project—Project build scripts
■ public—Publicly accessible static files
■ test—Automated tests

【用~run来立刻编译修改过的文件

    如果你用run命令启动了你的应用,Play将会在它接收到下一个HTTP请求时编译你的修改。要尽快开始编译,就是当文件被改了后,你应当改用 ~run 命令。】

 

4、访问应用

    访问默认的欢迎页:http://localhost:9000/。它就是某种hello world例子——它展示了一个运行的应用,输出了一些东西,让你看清楚各种东西都是如何组合在一起。它就是一个最少量的代码实际地像你展示了此web框架。

 

5、加一个controller类

    编辑app/controllers/Application.scala,将它的index方法换成下面的:

def index = Action {
Ok("Hello world")
}

    这个定义了一个action方法,它生成了一个HTTP OK响应带文本内容。现在刷新一下,你会看到输出了Hello world。

    为什么这是行的呢,就是因为在conf/routes这个HTTP路由配置文件中有一行将GET / HTTP请求映射到了一个方法调用:

GET / controllers.Application.index()

 

6、添加一个编译错误

    如果你犯错了,那输出更有趣。在action方法中,去掉Hello world后的引号,保存文件,重新加载页面,你会看到一个友好的编译错误。

    修复此错误,保存文件,再加载。Play动态重新加载修改,因此你不必每次做了修改就手动构建。

 

7、加一个HTTP请求参数

    这仍然不是一个合适的web应用示例,因为我们没有使用HTTP或HTML。现在我们往这个controller中加一个新的action方法,并带一个字符串参数:

def hello(name: String) = Action {

    Ok("Hello" + name)

}

    修改conf/routes路由配置文件,将一个不同的URL映射到你的新方法上,带一个HTTP请求参数叫n:

GET /hello controllers.Application.hello(n: String)

    在浏览器中访问:http://localhost:9000/hello?n=Play!

    注意查询字符串参数 n 匹配在routes文件中声明的参数名。

 

8、添加一个HTML页面模板

    最后,为了完成这个首个示例,我们需要一个HTML模板,因为你通常是用web应用框架来生成web页面,而不是纯文本文档。那么创建一个文件 app/views/hello.scala.html,内容如下:

@(name: String)

<!doctype html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>Hello</title>

    </head>

    <body>

        <h1>Hello <em>@name</em></h1>

    <body>

</html>

    这是一个Scala模板。第一行定义了参数列表,此例中也就是name这个参数——并且该HTML文档中包含了一个HTML em 标签,它的内容是一个Scala表达式——就是name参数的值。一个模板就是一个Scala函数定义——Play会将其转换成普通的Scala代码并编译。3.5.4节(我指的是Play for Scala这本书)会解释模板是如何成为Scala函数的。

    要使用此模板,你需要在hello action方法中渲染它来生成HTML输出。一旦Play将此模板转换成一个Scala对象叫views.html.hello,这意味着调用了它的apply方法。你之后用此渲染的模板作为一个字符串值来返回一个Ok结果:

def hello(name: String) = Action {
Ok(views.html.hello(name))
}

你可能感兴趣的:(scala,framework,play)