前言html
目前,Ruby on Rails及Grails等动态脚本语言正发展得如火如荼,而在以Java为首的开源最大阵营中,也出现了各类框架。其中最著名的就是Play框架(http://www.playframework.org/download)。java
Play 框架是一个完整的 Web 应用开发框架,覆盖了 Web 应用开发的各个方面。它借鉴了流行的 Ruby on Rails 和 Grails 等框架,又有本身独有的优点。具体表如今如下几个方面:其一,经过 Play 框架提供的命令行工具,能够快速建立Java Web 应用。其二,它拥有Java 代码动态编译机制,在修改代码以后,不须要重启服务器就能够直接看到修改以后的结果。其三,它还使用 JPA 规范来完成领域对象的持久化,能够很方便的使用不一样的关系数据库做为后台存储。其四,它使用 Groovy 做为视图层模板使用的表达式语言。模板之间的继承机制避免了重复的代码。总的来讲,Play 框架很是适合快速建立Web 应用开发。本文将为有必定Java Web框架基础的读者,来重点介绍如何使用play框架来编制一个最简单的信息增删改查应用。正则表达式
一:安装Play框架sql
安装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后的名称则为应用的名称。)架构
三:配置应用 将框架工程导入eclipseapp
咱们为了要在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,再在浏览器中输入:
这个时候,点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
-------------
整理自网络