`

Play框架快速入门

阅读更多
本人作品,原文发表在:
http://tech.it168.com/a2011/1107/1269/000001269990.shtml
转载请注明出处,版权所有,违者必究

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

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

  一、安装Play框架

  安装play框架前,只需要使用JDK 1.5以上的版本即可,将官网上的play框架下载后解压到某个指定目录下,使用的是eclipse开发工具即可。在本文中,将介绍的例子,是一个关于公司、部门、员工之间的CRUD操作,其关系为:一个公司有很多部门,一个部门有很多个员工。

  二、开始使用PLAY框架的脚手架功能

  PLAY框架为能让用户快速开始搭建play系统的原型。下面是使用play中脚手架功能的步骤:

  在命令行方式下,转到play框架的安装目录,本文假设为c:\play下。
  假设我们的应用的名称为corporations,则在play中,新建立一个应用只需要用如下命令即可:  play new corporations,其中new表示新建应用,new后的名称则为应用的名称。
  在输入上面的语句后,会提示输入确认系统的名字,这里输入corporations,按回车确认即可。
  我们使用cd corporations目录中,会发现已经有play自带的框架的内容了。我们可以在命令行方式下,执行play run,这时play就会启动自带的jetty服务器,将应用启动起来。
   在启动后,可以通过浏览器浏览刚才新建的应用了,方法是http://localhost:9000,就可以看到一个默认的play应用,其中显示的首页中,简单指导了一些简单的配置方法。如下图:
 
  三、配置应用 将框架工程导入eclipse

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

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

  2 依然在corporations目录下,输入play eclipse,表示要生成能导入eclipse的框架工程。

  3 再启动eclipse ,然后使用导入工程的方法,把corporations工程导入。

  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即可看到如下的效果:

[img]
http://image20.it168.com/201111_500x375/837/a5e647ab4275791.JPG
[/img]

这个时候,点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操作,如下图:

[img]
http://image20.it168.com/201111_500x375/837/38ef72207157970b.JPG
[/img]
八、优化列表

  我们在查看每个实体类的列表时,发现在列表中,会把每条记录的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 重新运行程序,即可看到效果,如下图,可以看到,能看到所有字段值。

[img]http://image20.it168.com/201111_500x375/837/58c363288540de57.png
[/img]

十一、改变列表中标题的显示

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

  fullName=Full Name

  即可,如下图显示:


小结

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

相关推荐

    JAVA PLAY框架入门学习手册

    JAVA PLAY框架入门学习手册 Java PLAY框架是基于Java语言的Web应用程序框架,旨在提高Web应用程序的开发效率和可维护性。下面是Java PLAY框架的入门学习手册,涵盖了框架的主要概念、目录结构、请求生命周期、HTTP...

    play框架文档(英文版)

    ### Play框架的安装与入门 - **安装指南**:Play框架的安装过程简单明了,只需要下载并解压即可开始使用,对于不同操作系统都有详细的指导步骤。 - **Hello World教程**:初学者可以通过编写一个简单的“Hello ...

    Play框架入门教程

    Play Framework是一个开源的Web应用框架,使用Scala和Java语言混合编写。Play遵循传统的MVC(Model-View-Controller: 模型、视图和控制器)模式,这一点Lift与其有所不同。 本文主要对Play Framework最新第二版...

    play framework框架教程

    **模板引擎**:Play框架内置了一个高性能的模板引擎,它支持直接访问模型数据,减少了模板配置的工作量,并且提供了丰富的表达式语法,便于快速构建动态网页。 #### 二、初学者入门 **安装Play Framework**:首先...

    Play framework 2.0入门教程(四)的源代码,Play留言板(数据库版)

    Play框架是Java和Scala开发Web应用的一个强大工具,它提供了模型-视图-控制器(MVC)架构模式,使得开发者能够快速、高效地构建现代Web应用。在这个“Play框架2.0入门教程(四)的源代码”中,我们主要探讨的是如何在...

    java play_入门学习手册

    【Java Play 框架入门学习】 Java Play 框架是一个开源的Web应用程序框架,它基于MVC(模型-视图-控制器)架构模式,使用Scala和Java语言开发。本入门学习手册将引导你逐步了解如何配置Play环境、创建项目、运行...

    Play framework 2.0入门教程(三)的源代码,Play留言板

    Play Framework 2.0 是一个基于Java和Scala的开源Web应用程序框架,以其“写后即运行”的特性而闻名。这个入门教程的第三部分是关于如何使用Play Framework构建一个简单的留言板应用。在这里,我们将深入探讨Play ...

    play_入门学习手册

    框架入门学习手册》 Play!框架是一款全栈式的Java Web应用框架,它提供了MVC架构、对象持久化、Groovy模板引擎等一整套构建现代Web应用的工具。作为一款纯Java框架,Play!允许开发者在不改变原有开发工具和类库的...

    play初学者学习专用

    1. **Play框架入门学习手册** 这个文档将引导你了解Play框架的基础概念和安装过程。通常,手册会介绍如何设置开发环境,如安装IDE和必要的依赖,以及如何创建第一个"Hello, World!"应用。它还会讲解框架的基本结构...

    Play Framework Essentials

    ### Play框架入门 #### 简介 Play是一个功能全面、高效、易于构建可伸缩Web应用程序的框架。它采用Scala和Java编程语言开发,致力于提供简洁的代码和直观的开发体验。在Play框架中,开发者可以利用其非阻塞I/O和对...

    play!framework框架——japid源码

    7. `JapidSample`: 可能是一个包含Japid模板和相关示例代码的目录,帮助开发者快速上手。 8. `lib.plain`和`eclipse-plugin`: 分别可能是纯Java库和Eclipse插件相关文件,用于项目开发和集成环境。 9. `lib`: 存放...

    Play详细使用文档

    #### 一、Play框架概述 Play 是一款轻量级、高性能且可扩展的应用开发框架,适用于构建现代 Web 应用程序。它支持多种编程语言,包括 Java 和 Scala,并提供了强大的功能集,使得开发者能够快速地构建高质量的 Web ...

    HTML+5零距离接触:学习快速入门

    ### HTML5快速入门知识点 #### 一、HTML5概述 - **HTML5**标志着Web开发标准的一个重大飞跃,它不仅用于表示Web内容,更重要的是它将Web带入了一个成熟的应用平台。 - HTML5中,多媒体如视频、音频、图像、动画等...

    play1的文档资料

    "Play源代码分析1—Server启动过程"和"Play Framework介绍3--使用Eclipse开发和调试"这两篇文档分别对Play框架的启动过程和在Eclipse环境下的开发调试进行了详细解析,对于理解框架内部机制和优化开发环境十分有...

    Play for Scala

    《Play for Scala》不仅是一本入门Play框架2.x的教材,它更深层次地探讨了Play的应用架构、核心功能和高级技术,适合有一定Scala基础和Web开发经验的开发者阅读。通过学习这本书,读者不仅可以掌握Play框架的核心...

    play入门学习手册

    在Play框架中,商业逻辑在domain model层里进行管理,Web客户端不能直接调用这些代码,domain对象的功能作为URI资源暴露出来。 客户端使用HTTP协议提供的统一API来暗中操作这些底层的商业逻辑实现资源的维护。然而,...

    Windows驱动经典快速入门+驱动宝典

    在IT领域,Windows驱动程序是操作系统与硬件设备之间的...通过深入学习这些知识点,并结合“Windows驱动经典快速入门+驱动宝典”的教程,开发者可以逐步掌握Windows驱动的开发技术,为构建自己的驱动框架打下坚实基础。

    HAP框架-SSO入门手册.docx

    HAP框架可能与其他常见的Web开发框架如Spring、Struts或Play等有集成,这些框架提供了基础的认证和授权机制,为SSO的实现奠定了基础。HAP框架通过扩展这些框架的功能,实现跨域身份验证和会话管理,以达到SSO的效果...

    IntelliJ_IDEA_11_快速入门手册

    以上就是 IntelliJ IDEA 11 的快速入门指南,涵盖了从项目创建到运行基本 Java 应用程序及单元测试的基本步骤,以及如何在 IntelliJ IDEA 中运行 Play Framework 应用的基础知识。希望本指南能帮助您快速上手这款...

Global site tag (gtag.js) - Google Analytics