简介

在这个教程中你会学到用Play框架从头到尾的开发一个真实的Web程序。在这个程序中,我们将使用在一个真实项目中需要的所有技术,来介绍Play框架开发Web程序的实战技巧。

这个教程分为几个独立的部分。每个部分将介绍更多复杂的特性,并且提供真实项目的需求,包括数据验证、错误处理、权限框架、自动测试框架、Web界面接口、国际化等内容。

项目

我们决定创建一个blog项目。这不是一个有想象力的决定,但是这个项目能让我们学习到目前Web程序大多数的功能性需求。为了更有趣点,我们要处理不同角色的用户(editor,admin)。这个项目的名字称为yabe。

这个教程的源代码在Play安装目录下的samples-and-tests/yabe/目录。

先决条件

首先,确保计算机安装了Java,Play框架需要Java 5或以上版本。还有我们要使用命令行,最好使用类Unix操作系统。当然如果你使用Windows操作系统,Play框架也会工作得很好。要有Java和Web开发技术(比如:HTML, CSS and JavaScript)的知识,然而不必深入了解JEE的知识。Play框架是一个“全栈式”Java框架,提供和封装了你所需要的所有Java API,你不必知道怎样配置JPA实体或者部署JEE组件。当然还需要文本编辑器。如果你习惯用诸如Eclipse和NetBeans等Java IDE开发Play框架的Web程序是非常好的。然而使用一些诸如Textmate、Emacs或VI简便的文本编辑器来开发Play框架的Web程序也是非常愉快的。

安装Play框架

安装非常简单,下载最近的版本然后解压到任何路径。如果使用Windows,应避免在安装路径中有空格。比如c:\play ,而不能是c:\Documents And Settings\user\play。最好是把Play主目录加入到工作路径path,这样只需要在命令行输入play就可以使用Play框架的功能了。为了检测Play框架是否安装好,可以在命令行中输入play,然后命令行窗口中会出现基本帮助信息。

创建项目

Play框架安装好后,就可以blog项目了。创建Play程序非常容易,仅仅只需要Play框架命令行的命令。

打开命令行窗口,输入:

~$ play new yabe

执行后会提示输入这个项目的全名:Yet Another Blog Engine

play new命令创建了一个yabe/目录,这个目录中包含一些文件和文件夹。重要的有:

app/存放项目的核心文件,分别有models、controllers和views三个文件夹。它也可以包含其他Java包,这是java源文件存放的地方。

conf/存放项目的配置文件,有项目主配置文件application.conf,路由配置文件routes,国际化配置文件messages。

lib/存放项目所需的Java二进制包。即.jar文件。

public/存放公用资源,比如JavaScript文件,CSS样式和图片资源。

test/存放项目的测试程序,测试程序基于JUnit或Selenium。

注意:Play框架的字符编码是UTF-8。要保证上面这些文件夹中的文本文件也要是UTF-8编码。

如果你是一个经验丰富的Java程序员,你也许想知道.class文件存放在哪里。实际上Play框架不使用.class文件,而是直接读取Java源文件,并使用Eclipse来编译他们。

这导致在开发过程中的两件重要事情。首先,Play框架运行时会检测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>

在浏览器刷新这个页面。

设置数据库

对于这个blog程序,在编代码之前还有一件更重要的事情就是设置数据库。Paly附带有一个称为H2的标准的SQL数据库管理系统,你可以选择一个内存数据库或文件系统数据库来保存数据。

在这个程序开始,我们要做大量的测试和改变,由于这个原因,最好使用内存数据库以便总是有新的数据集。

设置数据库,打开yabe/conf/application.conf文件去掉下面这行的注释:

db=mem

回到浏览器刷新页面,Play会自动启动数据库,在程序日志里会有:

INFO ~ Connected to jdbc:h2:mem:play

本文章英文原文:http://www.playframework.org/documentation/1.2.3/guide1

转载于:https://www.cnblogs.com/FigoYu/archive/2011/10/01/2197180.html

【翻译】Play框架入门教程一:建立项目相关推荐

  1. R语言七天入门教程一:配置运行环境

    R语言七天入门教程一:配置运行环境 一.R语言介绍 1.R语言是什么? 参考:R语言教程-R语言介绍 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘.R语言有丰富的 ...

  2. Newbe.Claptrap 框架入门,第二步 —— 创建项目

    接上一篇 <Newbe.Claptrap 框架入门,第一步 -- 开发环境准备>,我们继续了解如何创建一个 Newbe.Claptrap 项目. 安装项目模板 打开控制台运行以下命令来安装 ...

  3. Grunt 入门教程一:开始使用Grunt(翻译自官方教程)

    关于Grunt翻译: 用了Grunt一段时间,确实极大提高了前端开发效率,所以决定翻一下官方文档,方便英文基础不太好的童鞋们(本人英文也不怎么样).虽然在github上找到了一个中文的翻译,但是翻译质 ...

  4. 微信小程序云开发 初学者入门教程一

    微信小程序云开发 初学者入门教程一(云开发环境搭建) 本教程适合刚刚入门的小白,云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现 ...

  5. 无废话SharePoint入门教程一[SharePoint概述]

    一.前言 听说SharePoint也有一段时间了,可一直处在门外.最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发.但苦于网上SharePoint入门的东西实在太少,导致 ...

  6. webpack 4 入门教程一

    什么是 Webpack?  webpack 是一个静态模块打包器(module bundler) 作用: ① 它能将多个js文件打包成一个文件(传统开发会需要引入很多js,导致网页加载需要发起多次ht ...

  7. micropython入门教程-【chocho教程】micropython入门教程一

    第一章:初识microPython microPython是什么? 在回答这个问题之前,让我先来了解一下,什么是Python? Python,是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软 ...

  8. php 网页游戏开发入门教程一(webgame+design)

    一.简单的程序框架. webgame程序构成: 三大部分. 第一是数据流程.第二是程序.第三是美术. 其中,数据流程包括了功能.也只有在功能中才能体现数据流程. 数据流程相当的麻烦,后面再讨论. 比如 ...

  9. 原创 | 全网最实在的docker入门教程一

    作者:潘吉祥 为什么学习docker 近年来微服务架构真的是非常流行了,作为开发者,即时你没有做过微服务,但肯定谈论过它或者听别人谈论过它.那么我们的docker和微服务之间究竟有着什么联系呢? 众所 ...

最新文章

  1. LeetCode简单题之重新格式化字符串
  2. 1001 A+B Format
  3. ApacheCN 学习资源汇总 2019.3
  4. 夺命雷公狗-----tp中遇到数据乘积的问题的遇见
  5. 【错误记录】IntelliJ IDEA 中右键点击源码目录选择 New 选项 没有创建 Java Class 选项 ( 将对应的源码目录标记为 Sources 选项 )
  6. php李捷,【问题解答】蝶泳手外划的作用
  7. 特征筛选8——递归特征删除(REF)筛选特征(有监督筛选)
  8. Git1天打卡 day13-查看仓库文件改动状态
  9. lammps后处理:ovito选择原子高级技巧讲解
  10. 超靠谱,一文教会你如何注册申请安徽省实用新型专利
  11. B站网页端下载视频,直接浏览器下载或者Java实现下载
  12. Asp.net中GridView使用详解
  13. 特征图注意力_深度学习入门之注意力机制
  14. origin copy page图片不全
  15. java输入成绩并排序简单_java 成绩排序
  16. Play 2.6 使用Ebean
  17. geohash网格图_Geohash 网格聚合
  18. 直流有刷电机调速原理及Matlab/Simulink仿真
  19. 基于PHP+小程序(MINA框架)+Mysql数据库的校园跑腿小程序系统设计与实现
  20. python--元组tuple

热门文章

  1. 该如何对「半监督学习算法」实际性应用进行评估?Google给出了新答案
  2. 41 岁的黄峥辞任拼多多董事长一职,未来将投身于科学研究!
  3. Python实现前端AES加密方式分析,***密码学必备!
  4. Linux环境安装python3.6(APT方式)
  5. BZOJ1001[BeiJing2006]狼抓兔子——最小割
  6. 小米 Play 发布:CPU+GPU 双 Turbo,每个月送 10 GB 流量
  7. 点击按钮的时候,切换搜索框的显示与隐藏(动画)
  8. 【行业看点】量子通信 量子计算机 量子列车…… 量子的世界究竟多精彩?
  9. Centos7下安装apache2.4 php5.6 pdo_oci oci8
  10. spring-amqp整合rabbitmq消费者配置和代码