play框架03--创建项目

安装Play


从下载页面下载最新的二进制包,然后在你喜欢的地方解压它。

如果你用的是Windows,最好避免在路径中混入空格。比如c:\play就是个比c:\Documents And Settings\user\play更好的选择。
  • 1

为了方便操作,你需要添加Play文件夹到你的系统路径中。这样你就不需要在play命令前面敲一大通路径名了。要想检查安装是否成功,打开一个新的命令行窗口,敲下play;应该会出来play的基本使用帮助。

创建项目


现在Play已经安好了,是时候开始写博客应用。创建一个Play应用非常简单,仅需要play命令行工具。之后会生成Play应用的基本架构。

打开一个新的命令行并敲入:

~$ play new yabe
  • 1

它会提醒输入应用的全名。输入yabe。 
play new命令创建了一个新的文件夹yabe/外加一系列文件和文件夹。其中包括下面各部分:

app/ 包括应用的核心,划分为models,controllers和views文件夹。它也可以包括其他Java的包。这是.java源代码文件所在之处。

conf/ 包括所有的应用配置文件,特别是主application.conf文件,路由定义文件和用于国际化的信息文件。

lib/ 包括所有可选的Java库,比如标准的.jar。

public/ 包括所有可以公开的资源,比如Javascript文件,样式表和图片。

test/ 包括所有的应用测试。测试可以是Java的JUnit测试或者Selenium测试。

因为Play只使用UTF-8编码,故所有的文本文件都需要使用UTF-8编码。确保你的文本编辑器已经做了相应的配置。
  • 1

如果你开发过Java应用,你可能会奇怪.class文件到哪儿去了。答案是……没有.class文件了:Play并不使用任何class文件;相反它直接处理Java源代码。实际上我们使用Eclipse的编译器来即时编译Java源代码 
这导致了开发过程中的两点重要的改进。第一个,Play会自动监测Java源代码的改变并在运行时自动重载。第二个,当一个Java异常发生时,Play能向你展示更好的错误报告 - 带对应的源代码的哦~

事实上Play在应用的tmp/文件夹下有字节码的缓存,但只用于加速重新启动项目的过程。如果需要,你可以用play clean清空缓存。


运行程序

现在可以测试一下新建立的程序了。回到命令行窗口,在yabe/目录下输入play run命令。Play框架将载入程序,启动Web服务器并监听9000端口。

打开浏览器键入http://localhost:9000,程序显示了一个缺省的欢迎页。

现在我们来看看这个页面是怎样显示的。

程序的主入口配置在conf/routes文件里。这个文件定义了程序所有可访问的URL。打开routes文件,会看到第一个“route”:

GET / Application.index

它告诉Play,当服务器收到来自于/路径的GET请求时要调用Application.index的方法。在这个程序中,Application.index是controllers.Application.index简写,因为controllers包是隐式附加的。

在创建一个标准Java程序时,通常会定义一个入口方法,比如:

public static void main(String[] args) {  ... }

Play程序则有多个入口方法,每个URL就有一个。这些方法称为action方法。定义Action方法的类称为controller。

看看什么是controller。打开yabe/app/controllers/Application.java源文件:

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

controller 类继承于play.mvc.Controller类,这个类提供了许多controller需要的方法,比如在index action中的render方法。

index action定义为public static void,因为controller类不需要实例化和返回值。

index action很简单,只是调用了render()方法来通知Play渲染模板。使用模板是返回HTTP响应的一个最通用的方式。

模板是在/app/views 目录下的简单文本文件。因为这里没有指定一个模板,index action会使用一个默认的模板:Application/index.html。

打开/yabe/app/views/Application/index.html:

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

在这个模板中,只有Play tag,与JSP tag类似,#{welcome /} tag会在浏览器中生成欢迎信息。#{extends /} tag 表示这个模板继承于main.html这个模板。模板继承可用来创建复杂的web也并重用公共部分。

打开/yabe/app/views/main.html模板:

<!DOCTYPE html><html>    <head>        <title>#{get 'title' /}</title>		        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <link rel="stylesheet" type="text/css" media="screen"             href="@{'/public/stylesheets/main.css'}" />        <link rel="shortcut icon" type="image/png"             href="@{'/public/images/favicon.png'}" />    </head>    <body>        #{doLayout /}     </body></html>

#{doLayout /}tag表示index.html插入内容的地方。

试着编辑controller类来看看Play怎么自动加载它。打开yabe/app/controllers/Application.java,删除render()后的分号,让它出错,就像这样:

public static void index() {    render()}

然后到浏览器刷新这个页面,Play会检测源文件变更并试着加载程序controller,但是因为controller有错误,所以在浏览器中显示一个编译错误。

把刚才的错误修改正确,在编辑模板,打开yabe/app/views/Application/index.html覆盖欢迎消息。

#{extends 'main.html' /}#{set title:'Home' /} <h1>A blog will be here</h1>

在浏览器刷新这个页面。

配置数据库


在开始写代码之前还要多做一件事。作为博客引擎,我们需要一个数据库。为了便于与开发,Play内置了一个叫做H2的数据库。当然如果需要,我们也可以切换到一个更加健壮的数据库。你可以选择设置数据时存储在内存中,还是在文件系统中(这样即使你重新启动,你的数据也会保留)。 
在一开始,我们将对应用模型做许多测试和改动。因此,最好选择存储在内存中,这样每次启动,都不会跟旧数据有任何牵连。 
打开yabe/app/application.conf,解除这一行的注释:

db=em
  • 1

正如你在注释中看到的一样,你可以冗余的配置任何JDBC数据库,甚至配置链接池。

现在回到浏览器并刷新欢迎页面。Play将自动启动数据库。检查下面一行是否出现在应用日志中:

INFO ~ Connected to jdbc:h2:mem:play
  • 1

补充


如果运行play run 命令出现下面提示: 
这里写图片描述 
解决办法: 
找到play\framework\build.bat 修改

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M %DEBUG_PARAM% %JAVA_OPTS% -Dfile.encoding=UTF-8 -Dinput.encoding=Cp1252 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="%fp%sbt/sbt.boot.properties" %PLAY_OPTS% -jar "%~dp0sbt\sbt-launch.jar" %*
  • 1

 
java -XX:+CMSClassUnloadingEnabled %DEBUG_PARAM% -Dfile.encoding=UTF8 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="file:///%p%sbt/sbt.boot.properties" -jar "%~dp0sbt\sbt-launch.jar" %*

将play项目导入myeclipse

前提:已安装play并配置了环境变量

第一步 :打开你的项目将下面几项删除(没有就跳过)

第二步:在cmd中来到项目的路径下(cd,不是来到项目里,而是项目名前一级目录),然后输入play eclipsify +项目名

第三步:导入

猜你喜欢

转载自blog.csdn.net/J_M_S_H_T/article/details/80827003