playframework1.2.x博客教程(一)-创建项目

来源:互联网 发布:音乐下载软件推荐 编辑:程序博客网 时间:2024/06/04 00:50

本博文将介绍如何使用playframework 创建一个真实的Web 应用程序,通过这个Demo 介绍Play应用开发中的最佳实践。

1. 下载安装 playframework ,配置环境变量

playframework1.2.7 要求JDK5及以上版本,推荐使用JDK7,推荐中UniX系系统下使用命令行进行开发。

2. 创建项目

play new app_1

转换成intellij idea项目,进入目录,play idealize

在ide中导入项目文件,app_1.ipr

在命令行中测试项目,play run ,默认绑定9000端口

3. 目录介绍

apps/ 包含应用的核心部份,用models,controllers,views三个目录组织不同功能的JAVA文件,这是java的源文件目录,手工创建时,需要将此目录作为源文件目录。

conf/ 包含应用所有的配置文件,特别要注意的是,主要配置文件application.conf ,路由配置文件routes 和消息配置文件messages,此文件一般用于国际化

lib/ 主要存放依赖jar 包

public/ 包含所有的公共静态资源,比如 js,css,image等

test/ 包含整个应用所有的用例测试,支持Junit测试和Selenium测试

  • play使用UTF-8作为唯一的编码,所以所有文本文件都要使用UTF-8进行编码,在Unix系统不存在此类问题,但在window中需要注意

4. class文件放在哪里

如果你是一个经验丰富的Java程序员,你会很想知道.class文件的编译和加载时机,但是Play官方的答案是:Play没有使用类文件,而是直接读取Java文件源代码。

这样做在开发过程中有两个明显的好处,一个是Play会在运行时监测到Java源文件的改动和自动重新加载他们;第二个是当出现一个Java异常时,Play可以显示更好的报告,甚至是出错的行数和代码。

  • 实际上,Play为了保证效率,会在应用的tmp/目录下缓存编译后的字节码文件,如果有需要,可以使用paly clean命令清理缓存。

5. 运行程序

使用play run 命令可以启动刚创建的程序。默认的端口是9000

看到此页即为启动成功。

  • 为什么会显示这个页面?因为我们程序中 conf/routs文件配置了路由。

GET / Application.index

这行配置很明了地实现了,当服务器收到路径为/的GET请求时,它会调用Application.index方法,这是controllers.Application.index的简写,因为处理请求的controllers包是默认的。

当你想创建独立的Java应用程序,可以使用单一入口的Main方法 。Play 服务器程序的入口是是一个URL,对应一个action方法,这些action方法被定义在指定的类里面,这些类被称为控制器controllers

上面例子的controller的源代码是这样的:

package controllers;

import play.mvc.*;

public class Application extends Controller {

public static void index() {    render();}

}

  • controller 需要继承自play.mvc.Controller类,这个类提供很多有用的方法,比如这个例子中使用的render()方法,使用一个模板成成HTTP响应。

模板templates是在/app/views 目录下一个简单的文本文件,不指定特定的模板名,Application/index.html作为默认模板被使用。

app_1/app/views/Aplication/index.html

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

这个模板内容看起来内容很少,实际上你看到的都是Play的标签,Play标签类似于JSP的tags。这里使用的#{welcome/}Tag去生成你在浏览器里看到的welcome信息。

#{extends /}tag告诉Play此模板继承自另一个名为main.html的模板,模板的继承是允许你通过重用公共部份创建一个复杂Web页面的一个强大的概念。

打开/app_1/app/views/main.html`模板:

<!DOCTYPE html><html>    <head>        <title>#{get 'title' /}</title>        <meta charset="${_response_encoding}"/>        <link rel="stylesheet" media="screen" href="@{'/public/stylesheets/main.css'}">        #{get 'moreStyles' />        <link rel = 'shortcut icon' type="image/png" href="@{'/public/images/favicon.png'}">        <script type="text/javascripts" charset="${_response_encoding}" src="@{'/public/javascrrpts/jquery.min.js}"></script>        #{get 'moreScripts'/}    </head>    <body>    #{doLayout /}    </body></html>
  • 上面的#{doLayout/}标签将会被 Application/index.html替代
0 0
原创粉丝点击