文档章节

PLAY2.0框架快速入门

勇敢的蜗牛_Z
 勇敢的蜗牛_Z
发布于 2014/10/28 10:56
字数 2667
阅读 192
收藏 2

前言

  目前,Ruby on Rails及Grails等动态脚本语言正发展得如火如荼,而在以Java为首的开源最大阵营中,也出现了各种框架。其中最著名的就是Play框架(http://www.playframework.org/download)。

  Play 框架是一个完整的 Web 应用开发框架,覆盖了 Web 应用开发的各个方面。它借鉴了流行的 Ruby on Rails 和 Grails 等框架,又有自己独有的优势。具体表现在以下几个方面:其一,通过 Play 框架提供的命令行工具,可以快速创建Java Web 应用。其二,它拥有Java 代码动态编译机制,在修改代码之后,不需要重启服务器就可以直接看到修改之后的结果。其三,它还使用 JPA 规范来完成领域对象的持久化,可以很方便的使用不同的关系数据库作为后台存储。其四,它使用 Groovy 作为视图层模板使用的表达式语言。模板之间的继承机制避免了重复的代码。总的来说,Play 框架非常适合快速创建Web 应用开发。本文将为有一定Java Web框架基础的读者,来重点介绍如何使用play框架来编制一个最简单的信息增删改查应用。

  一:安装Play框架

  安装play框架前,只需要使用JDK 1.6以上的版本即可,将官网上的play框架下载后解压到某个指定目录下(假设为E:\paly-2.0),
    配置系统环境变量:Path中增加 E:\paly-2.0
    使用的是eclipse开发工具即可

  二:开始使用PLAY框架

  PLAY框架为能让用户快速开始搭建play系统的原型。下面是使用play中创建工程的步骤:
    1.Win+R,输入cmd,打开CMD控制台
    2.切换到要建立工程的目录下,输入play new PlayTest开始创建PlayTest工程
    

 


    3.出现询问工程名字,本例输入PlayTest  (自定义),回车继续,出现选择工程类型选择,这里选择2——java 工程(以后可以修改),回车,工程建立完成。

 


 (play new Pal,其中new表示新建应用,new后的名称则为应用的名称。)


  三:配置应用 将框架工程导入eclipse

  我们为了要在eclipse中方便我们的编码,所以需要把play刚为我们建立好的框架工程导入到我们的eclipse中去,所以我们按如下步骤去做:

  1 使用CTRL-C,先把我们正在运行的应用停止下来。

  2 切换到刚建立的工程(PlayTest)目录下,输入play eclipsify,表示要生成能导入eclipse的框架工程,回车等待程序运行完毕。


     

        3.启动eclipse ,然后使用导入工程的方法,把PlayTest工程导入。
        4. Play分为开发模式和生产模式两种,而切换的配置在工程下conf/application.conf中: 

         Application.mode=dev 生产模式改为:prod 

    主要区别在于开发模式中您无需重启server,每次请求都会查看是否有文件发生改变,改变即编译,这对于传统Java EE开发人员无疑是相当敏捷的。而这种方式同样会导致性能下降,所以生产模式中就不会这样了,而是采用预编译机制。 

    四:启动Play,运行该工程

        打开CMD控制台,用cd命令切换到该工程目录下,输入paly run 等待服务启动,然后在浏览器中输入http://localhost:9000/

        即可访问刚刚新建的工程,默认首页为play的欢迎页面。

------------------------------------------------------------------------------------------------------------------------

       4.在这个例子中,用的只是HSQL,所以打开conf/application.conf文件,将下面的db=mem 语句前的注释符号去掉,表示我们将使用hsql。

  5.同样,在conf/application.conf文件中,增加如下这行,表示我们将使用play框架自带的CRUD功能:
module.crud=${play.path}/modules/crud

  6.在conf/routes文件中,增加如下这行:
*/admin module:crud

  注意,在play框架中,routes是路由控制器,这行表示,将所有的CRUD操作都是只有通过 */admin访问的请求,才能实现play自带的CRUD功能。

  7.在进行上述修改后,我们再到命令行方式下,运行play eclipse,然后再到ECLIPSE下按F5刷新一下

  8.如果此时再使用play run,运行会发现暂时还没有更新,因为我们要进行数据层的配置。

  五:创建员工实体对象和控制层

  Play框架完全遵守MVC分层架构标准,因此我们按照MVC的分层来设计我们的引用。我们先创建员工实体对象和其控制层。

  首先,在eclipse的corporations工程中,在app/models目录下,新建Employee类,代码如下: 

    Package models;
  import java.util.Date;
  import javax.persistence.*;
  import play.db.jpa.Model;
  @Entity
  public class Employee extends Model {
  public String fullName;
  public Integer salary;
  public Date dateOfHire;


  在Play框架中,默认使用的是jpa注解标准,使用@Entity注解,说明该类是属于实体类,这里都是继承了play自己的模型层基类Model,这里由于是示例,只是列出了三个对象的属性。

  接下来,在app/controllers中,创建员工类的控制层文件,代码如下 

   package controllers;
  public class Employees extends CRUD{ // an empty class
   }


  这里看到,控制层文件的命名是Employees,使用的是PLAY框架优先约定的命名规则:实体类的复数形式。并且这里继承了Play中自带的CRUD基类的功能,这样,就可以在我们的应用中轻易使用到PLAY自带的CRUD功能了。

  现在我们马上来运行下应用,依然输入play run,再在浏览器中输入:

  http://localhost:9000/admin


  这个时候,点Add按钮,就可以增加员工了。

  六:创建部门实体类和部门控制层

  接下来,我们继续创建部门实体类和部门控制层的文件。同样,在app/models目录下,新建立Department类,如下:  

  package models;  import javax.persistence.*;  import play.db.jpa.Model;  @Entity  public class Department extends Model {  public String name;  public String description; }


  同样在app/controllers目录下,创建控制层文件Departments,代码如下:

  package controllers;
  public class Departments extends CRUD {
   }


  这个时候,再次运行play run,会发现使用http://localhost:9000/admin时,看到的界面将会比之前的多了能够增加部门实体类,大家可以尝试下。

  七:建立部门跟员工之间的连接关系

  现在我们在建立了部门类和员工类后,可以开始建立它们之间的关联关系了。由于一个部门中是有多个员工,所以在员工类employee中,写入如下代码,建立两个类之间的关联: 

   @ManyToOne
  public Department department;


  这里依然使用了@ManyToOne的JPA注解去实现多对一的关系。在再次运行程序后,会发现,在增加员工时,会出现下拉菜单选择框,让其选择该员工属于哪一个部门。

  八:建立公司实体类和控制类

  最后,我们建立公司实体类和控制类。同样,在app/models目录下,建立Company类如下:

  

    package models;
  import javax.persistence.Entity;
  import play.db.jpa.Model;
  @Entity
  public class Company extends Model {
    public String name;
    public String address;
    public boolean isPublic;
   }


  company的控制层类代码如下:  

    package controllers;
  import models.Company;
  @CRUD.For(Company.class)
  public class Companies extends CRUD{
   }


  这里要提醒一点的是,由于company的复数是companies,而play框架原先约定俗成的是在实体类名后直接加字母s,所以这里使用了注解 @CRUD.For(Company.class),以表明该控制类文件Companies是为company实体类服务的。

  同样,一个公司里有许多部门,因此在Deparment部门类中,建立如下的多对一关系: 

    @ManyToOne
  public Company company;


  再次运行程序,可以看到,现在三个实体类都建立起来了,可以分别对公司,部门和员工进行CRUD操作

  九:优化列表

  我们在查看每个实体类的列表时,发现在列表中,会把每条记录的id都显示出来,这个在程序中假设不需要看到id字段的话,可以通过修改代码实现,比如在Company类中,增加toString方法即可:

  public String toString() {
  return name;


  而在Department和Employee类中,可以采用同样的方法,以不显示它们的id字段。

  十:增加校验规则

  在输入数据时,校验规则是必不可少的,在play框架中,可以很方便地使用注解来增加校验规则,比如在员工类中,可以要求输入的fullName字段内容不能超过100个字符,而且fullName字段不能为空,则在Employee类中,增加如下代码即可: 

@Required @MaxSize(100) public String fullName;


  下面列出一些常见的校验规则:

  @Email 校验email合法性
  @InFuture 检验是否将来的日期
  @InPast 检验是否是过往的日期
  @Match 对正则表达式的判断
  @Max 最大值
  @Min 最小值
  @Range 检验范围
  @URL 检验是否URL


  十一:改变列表的显示格式

  在默认情况下,比如查看employee列表,只能看到employee的名称字段,假设要在列表中看到每条记录的每个字段的话,要修改下play的模版,方法如下:

  1 停止现在的服务,CTRL-C停止。

  2 在命令行下,输入:

  play crud:ov template Employees/list


  这将在app/views/Employees目录下新建立一个list.html的页面。

  3 重新输入play run,并切换到eclipse中的项目中,按F5更新页面。

  4 在eclipse中,打开app/views/Employees/list.html,这个是雇员列表的模版文件。

  5 在该页中,找到id=”crudListTable”部分,修改为:

 #{crud.table fields:[fullName, dateOfHire, salary] /}


  即显示完整所有字段。

  6 重新运行程序,即可看到效果,如下图,可以看到,能看到所有字段值。

  十二:改变列表中标题的显示

  在默认状态下,列表中显示的字段标题是用实体类中的名称的,假如想把fullName修改位Full Name的话,可以在conf/messages下,增加:

  fullName=Full Name

  即可,如下图显示:

  小结

  在本文中,我们学习了如何使用Play框架的脚手架功能,快速搭建CRUD的应用原型。Play框架的配置方法简化了工作代码量。目前Play框架正在不断的完善中,读者可以根据本教程的指引实际操作后,进一步阅读官方文档加以深入学习。参考文章:http://www.playframework.org/documentation/1.2.2/evolutions

-------------

整理自网络


本文转载自:

勇敢的蜗牛_Z
粉丝 11
博文 49
码字总数 2531
作品 0
济南
程序员
私信 提问
play2.0 scala方式下 验证码问题

@红薯 , @大东哥 你好,想跟你请教个问题: play2.0 scala方式下 验证码应该如何实现啊,我看了play1.0是自带了验证码功能了,play2.0是没有验证码这个功能吗?...

大王叫我来巡山
2012/10/26
330
2
关于Play(Play 2.0 介绍)

Play 2.0 介绍 2007开始,我们一直致力于让Java开发web应用更容易。Play始于一个内部项目Zenexity,它深刻影响了我们开发web项目的方式:关注开发者生产力,遵循web架构的特点,并打破常规,...

大东哥
2012/03/19
1K
0
IntelliJ 怎么给play2.X工程添加jar包?

IntelliJ 14 怎么样给play2.0 添加 jar包呢,在Project Stractrure中设置都不行啊?

XSimon
2015/03/12
637
3
Play 2.0 文档 - 入门 -- 针对Scala开发者

安装 Play 2.0 准备工作 运行Play框架,需要JDK6或以上版本。 如果你使用MacOS,已内建支持Java。如果你使用Linux,确保你安装了SUN JDK或OpenJDK(非gcj,大多数Linux发布版默认安装的版本)...

大东哥
2012/03/19
5.2K
8
ubuntu搭建nginx+scala+play2.0运行环境

学scala有段时间了,最近用scala做了个社区:<a href="http://www.cn-scala.com" title="http://www.cn-scala.com"></a>,开始买了个内存512的vps,但是编译都不通过,jvm提示无法为对象分配空......

冰雨心
2012/06/26
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部