1.x

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

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

从Spring + Ejb + Struts2 迁移到Play 1.x 框架 之一

穿精又带淫゛_ 提交于 2019-12-05 03:48:37
原来项目比较古老,前台是用delphi,后台有用Ejb做……这货已经很少有人见过了……,现在公司主要项目都转到play上,所以这个项目也重构。 第一阶段是将SSE 迁移到play,尽量不改动代码,只要能运行即可。 需求就是这样,要做的工作不少,因为play是类Rails的框架,与传统的SSH2不在一条线上。 大致步骤如下: 第一步,去掉多余的注解,包括spring的,Struts2的,EJB的。 第二步,将原来用spring的注入的对象new出来。 第三步,将play的请求转发到原来action层。 前两步这里不讨论,重点在第三步。 在请求-响应的实现模式上,play属于参数-返回模式,而struts2属于Pojo模式。前者将请求参数封装在响应方法的参数列表中,后者将请求封装在响应类的类变量中。原始http请求数据在play与struts2中传输就是一个大问题。因为我们不能用play框架自动地将请求表单参数反序列化成对象。 如: student.id=1&student.name=zhangshan&student.friends[0].id=2&student.friends[0].name=lisi 一般转换工作都是MVC框架帮我们做的,如果没有框架帮忙,会比较麻烦,我原本打算用ognl做这个工作的,但是后来发现有ognl不能初始化数组,导致数组越位问题,所以就放弃了。 针对