Play

PLAY2.0框架快速入门

痞子三分冷 提交于 2020-12-18 06:44:39
前言   目前,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), 配置系统环境变量

用n多的框架写同一个demo

我只是一个虾纸丫 提交于 2020-02-29 17:27:41
发表日期2016年年末 最近有了比较长的空闲时间。 所以看了很多很多不同的语言,框架。 java用了很多年了,总觉得眼界都被java影响了,所以想从新开始学一点新的东西。 而一旦开始选择开始的路径,完美主义的小心思就出来作祟了。 泛泛的接触了好多好多东西,基本上主流的语言,框架都把入门文档看了个遍。 到最后都没有达到最初想学点东西的目的,反而看文档的能力提高不少...... 所以,我决定不再单纯的看了。 我觉得执行下面的计划,动手写写。这也是为什么文章开始就要写明发表时间,因为未来会发生什么谁也不知道,我得到的结果只是当下我认为的好结果而已。 仅此而已 测试方式:controller层上返回服务器当前时间 new Date().getTime() //long类型 开发方式:使用各个框架的引导教程默认设置去写代码,尽量写最少的代码完成demo 测试的框架:jfinal(java),grails(groovy),play(scala),springboot-undertow(java),express(js),beego(golang),compojure(clojure)....看情况增加 测试内容:ab进行压测测试,开发效率(完成所花费的时间),上手难度,扩展性(面对需求频繁更改的可维护性) 压测命令:ab -n 100000 -c 1000 -k http:/

PlayFramework 2.1 技巧-性能调优实战

不打扰是莪最后的温柔 提交于 2020-02-28 13:52:06
转载请注明出处,保持署名 作者:joymufeng 1. 为什么要调优? 1.1 实验:一个简单的示例 Play Framework2.1的基本设计思想是能够快速处理大量耗时较少的请求,比较耗时的请求采用异步方式完成。为了很好地说明这一点,让我们来看一个例子,编写控制器代码如下: public static AtomicInteger count = new AtomicInteger(0); public static Result test(Long id) { if(id!=0){ try { System.out.println("sleeping...:"+count.addAndGet(1)); Thread.currentThread().sleep(1000000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("no sleep"); } return ok("good."); } 在conf/routes文件中添加如下路由: GET /:id controllers.Application.test(id:Long) 执行play run启动项目

Play 1.x 日期格式与参数绑定 (Play 1.x Date Format And Parameter Binding)

▼魔方 西西 提交于 2019-12-15 19:52:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 昨天项目中遇到一个棘手的问题。是关于日期格式的。 项目是前端Delphi,后端Play 1.x。在进行数据交互的时候。日期有两种格式,长格式:yyyy-MM-dd HH:mm:ss,短格式:yyyy-MM-dd。 在Play 框架对请求过来的数据进行参数绑定的时候,会将请求中的K/V字串转换为对象中规定的类型。比如日期类型Date。 Play中是支持配置统一的转换格式,在conf/application.conf中: # Date format # ~~~~~ date.format=yyyy-MM-dd # date.format.fr=dd/MM/yyyy 但是,这里会有个问题。因为Play参数绑定中日期的处理是用的java.text.SimpleDateFormat类。 如果 是在Application.conf中配置的是短格式,那么如果请求是长格式的,时分秒就会被抹掉,归零。 可是如果配置长格式,那么短格式因为格式不正确,SimpleDateFormat中parse方法处理是抛异常,绑定中play会将该字段设为null。 一开始没有想到好方法,因为项目刚刚从EJB+SSH 转移到Play 1.x上,稳定跑起来是第一,不宜动刀去修改原来的数据结构。本还想修改play的源码

Play 1.x框架学习之七:多数据库切换与源码修改 ( Databases Switch And Modify Source Code)

岁酱吖の 提交于 2019-12-15 19:39:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在单数据源(单个ip)下的多库,可以使用use xxdb 命令进行切换,但是如果多个数据源的情况下,use命令就不行了。在play框架中,提供了多数据源多库的切换。本文不提供完全的例子,只提供部分的代码,而且重点是在后面的修改源码。 如果需要多ip多库切换,就必须有一个主库,保存所有分库的信息。就如云应用中,需要保存所有租户的数据源与库名,因为可能是多个库共用一个服务器,多个服务器构成集群云应用。 首先需要配置数据源,其中有主库的db与分库db_01: Conf/application.conf jpa.dialect=org.hibernate.dialect.MySQLDialect db.url=jdbc:mysql://basedbip:3306/pop?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 db.driver=com.mysql.jdbc.Driver db.user=root db.pass=root db=pop db_01.url=jdbc:mysql://anotherdbip:3306/pop?autoReconnect=true&useUnicode=true&characterEncoding=utf-8

用Play 1.x 实现简单云计算多租户设计(Use Play 1.x To Achieve Multi-Tenancy Design)

Deadly 提交于 2019-12-15 19:39:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这里的云计算多租户是指一个web应用,多个数据库。每一个租户对应着一个数据库。 数据库方面,简单分为一个基本库,记录着基本信息与租户的信息,还有租户数据库配置信息。N个租户库,这N个租户库,可能分布在一台服务器上,也可能分布在N台服务器上,可能两者兼有。所以在基本库中的租户的数据库所在服务器信息(下面称为数据源信息)与数据库信息。 Play的数据源配置,在conf/application.conf中,如: jpa.dialect=org.hibernate.dialect.MySQLDialect db.url=jdbc:mysql://basedbip:3306/pop?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 db.driver=com.mysql.jdbc.Driver db.user=root db.pass=root db=pop db_01.url=jdbc:mysql://anotherdbip:3306/pop?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 db_01.driver=com.mysql.jdbc.Driver db_01.user

Play 1.x框架学习之四:定时作业调度 (job scheduler In play framework)

邮差的信 提交于 2019-12-10 09:28:44
Play框架提供了定时执行任务的功能模块,也就是Job。大家可以用来做一些定时的任务,如数据汇总,定时同步等。play使用了Quartz项目。可以轻松地定制调度任务的时间。Play框架还预置了几种调度方式,如项目启动调度,启动异步调动,每多少时间调度,和通用的Quartz调度设置。 首先我们看看启动调度,启动调度是同步于项目启动: package job; import play.jobs.Job; import play.jobs.OnApplicationStart; @OnApplicationStart public class JobOnStart extends Job{ @Override public void doJob() throws Exception { super.doJob(); System.out.println("Hello Job!"); } } 还有启动异步调度: package job; import play.jobs.Job; import play.jobs.OnApplicationStart; @OnApplicationStart(async = true) public class JobOnStartAsync extends Job{ @Override public void doJob() throws

Intellij Idea 配置 Play 1.x Framework 开发环境 (configuration Play 1 x Framework development environmen...

ε祈祈猫儿з 提交于 2019-12-10 09:24:05
虽然在公司使用的是Eclipse,但是我还是很中意俊俏的Intellij Idea(当然还有风骚的Sublime Text),Play 是一个类ROR的框架(Play 1.x 是比较正统的Java框架,Play 2.x混入Scala血统,个人不喜),在中小项目的背景下,play 能大大提高开发效率。两个高效的工具聚合在一起,将产生如何的效应,让我们一起Play Idea ~ 本人的开发环境: Win7、Intellij idea13、Play 1.3 第一步 生成Play项目 A. 新建命令: play new Daily B. 生成Idea项目信息: play idealize Daily 第二步 配置Intellij Idea 环境 C. 其实Idea中已经内嵌对Play的支持(1.x)。所以这步是将项目Daily复制你的工作项目目录中。然后再Import Module。 在play 1.3生成了Daily.ipr。如果导入ipr会有两个Module导入,还有一个docviewer的,所以可以删掉Daily.ipr,导入Module时选择Daily目录,这样Play应用就是单个导入到Idea中了。 D. 配置Play的classpath,选择Project Strcture( Ctrl + Alt + Shift + S )。选择Libraries

LinkedIn:用Gradle构建Java Play框架应用

余生颓废 提交于 2019-12-10 09:20:34
在LinkedIn,我们一直在评估最好的开发框架和工具来开发伟大的产品。11年的历史中,我们使用过很多前端web框架-如 Grails 、Frontier(LinkedIn内部的web框架),最近是: Play !我们喜欢 Play ,并热情地在公司内部推行起来。于是我们用Play进行了整合和扩展。现在我们正在评估哪个构建系统(build system,下同)更好用。 这篇文章介绍了用在Play中用Gradle来支持开发,及Gradle的目前状态和它的初步特性的演化。我们希望Play社区提供更多反馈以帮助Gradle类软件的开发。能够给Sbt和Gradle开发Play应用将提供更多的自由度和多样性。 背景:代码的组织 在LinkedIn,我们用代码仓库管理公共API和服务,每个这种仓库我们给它取了个名叫 Multiproduct ,每个Multiproduct通过独立的 Ivy 来组织,默认的名称是com.linedin。LinkedIn的部分代码已经开源了,如 databus 。 用Multiproducts来组织代码的结果是,它们都是多工程的构结构,每个Multiproduct有10个或100个工程,同时每个工程又有多个 构件(artifacts,下同)。 在LinkedIn,我们的Play应用在classpath路径下有超过500个jar包

Play 1.x框架学习之一:功能测试 (functional test in play framework)

戏子无情 提交于 2019-12-10 09:19:23
Play框架中已经集成了junit框架,大家可以非常方便的进行功能测试,这里我展现一个测试新增的例子,其他的大家可以照这个例子深入。 首先需要在app/modules包中定义一个Beat类,app/controllers中定义一个控制器Beats,同时需要定义个被测试的方法,并在conf/routes配置该方法的url地址,分别如下: app/modules/Beat.java: package models; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import play.db.jpa.GenericModel; @Entity @Table(name = "beat") public class Beat extends GenericModel { @Id public Long id; public String words; public Long count; public Long attime; } app/controllers/Beats.java: package controllers; import play.db.jpa.JPABase; import play.mvc.Controller; import