![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Play Framework
风雨兼程之2017
做一个介于牛A和牛C之间的人.
展开
-
Play framework 1.2.3 使用缓存、Memcached集成
play框架包含一个缓存lib,这个lib是用来和Memcached集成做分布式缓存用的。如果不配置Memcached,play框架将会使用单独的缓存(EhCache),其数据存储在JVM的堆中。把数据存储在JVM的堆中违反了play框架“不共享任何东西”的原则,这也导致了你不能把应用程序同时部署到多个机器,即不能在多个机器上负载均衡以保证应用的可用性、高性能(即使在多个机器部署了相同的应用,转载 2017-02-22 15:46:39 · 1183 阅读 · 0 评论 -
Play框架功能测试 (functional test in play framework)
Play框架中已经集成了junit框架,大家可以非常方便的进行功能测试,这里我展现一个测试新增的例子,其他的大家可以照这个例子深入。 首先需要在app/modules包中定义一个Beat类,app/controllers中定义一个控制器Beats,同时需要定义个被测试的方法,并在conf/routes配置该方法的url地址,分别如下: app/modules/Beat.Java:packa转载 2017-02-13 09:31:48 · 977 阅读 · 0 评论 -
Play框架的部分性能优化问题
1、实体查询时,有个基类方法Entity.find(sql,params).fetch(pageIndex,pageSize);这个方法最坑爹!严谨使用该方法。因为这是假分页,它首先将数据集全部查出来并加载到内存中,然后再做分页处理,严重影响效率,如果表过大,直接导致服务器内存溢出,导致Web服务崩溃。2、查询时按道理说,尽可能的不使用 select * from table 这样的语句,转载 2017-02-13 09:26:28 · 300 阅读 · 0 评论 -
Play Framework 数据库与事务管理
Play的事务由过滤器中处理,这里理一下Play框架与数据库相关的部分。 主要是play.db包中的DBPlugin/DB类,与play.db.jpa包中的JPAPlugin/JPA类有关,前者管理数据源,后者管理JPA。另外因为play是基于ActiveRecord模型,在play.db.jpa.JPAEnhancer类中,play织入了许多辅助方法。 DBPlugin/JPAP转载 2017-02-13 08:43:54 · 1189 阅读 · 0 评论 -
PlayFramework 1 输出所有 WS.url() 访问的 URL
记录下这个其实没有多大的意义,新入手 Play 框架的应该直接就是用版本 2 了,只因我们还要系统工作在 Play1 下,所以记下来,估计在 Play2 中已无借鉴作用了。我们在 Play1 中访问外部 WebService 资源都是用 WS.url(url),然后调用它的 get(), post(), delete() 等相对应的 HTTP 请求方法。我们可以系统中所有通过 WS.url()转载 2017-02-10 16:46:28 · 581 阅读 · 0 评论 -
继承类play.PlayPlugin,我们可以实现插件的功能
play1.2.4版本: 继承类play.PlayPlugin,我们可以实现插件的功能。 play框架本身基于此类提供了一些已经实现的plugin,比如:ConfigurablePluginDisablingPlugin,CorePlugin, DBPlugin, Evolutions,JobsPlugin, JPAPlugin, MessagesPlugin, TempFil转载 2017-02-10 16:42:04 · 805 阅读 · 1 评论 -
play 中的 restful webservice的实现
摘要: 本文详细的实现了play 中的 restful,并讨论了轻量级web service的优点。 1. 下列插件实现了包含有xml的请求body的自定义绑定。public class JAXBBinderPlugin extends PlayPlugin { public static JAXBContext jc; /* (非 Javadoc)转载 2017-02-10 16:38:17 · 827 阅读 · 0 评论 -
分享 play Framework 一些心得
转眼间 用Play 已经有2个年头了。 根据自己项目中 遇到的实际情况 分享一下 我对 Play 的一些看法。 或许习惯了SSH吧。从上学到接触Play 以前。 一直都是 SSH。 所以潜意识里 总是忍不住去跟 SSH比较。 性能哪个好呀。 安全性哪个高啊。 用了2年。 可是很抱歉的说 我真的不知道 哪个性能好。 哪个安全性高。 我甚至觉得 应该还是 SSH 好一些。转载 2017-02-10 14:59:08 · 1622 阅读 · 0 评论 -
play 源码分析
play 入口:play.server.Server类 主要做2件事情:1,Play.init; // 初始化,主要是配置的加载,插件的加载等等2,new Server(); 这里play使用了netty作为底层通讯服务器//实例化ServerBootstrap 启动netty服务器(boss线程池、worker线程池)。ServerBootstrap boo转载 2017-02-10 14:35:37 · 614 阅读 · 0 评论 -
Play framework 国际化
Play的国际化操作还是非常简单的。大概分为四步:1. 首先在${project_home}/conf/application.conf中定义你要用到的哪些国际化语言Java代码 application.langs=en,zh 2. 在${project_home}/conf/下新建两个 message 文件,后缀名跟上面定义的语言一样。转载 2017-02-10 14:34:29 · 478 阅读 · 0 评论 -
来玩Play框架06 用户验证
用户验证(User Authentification)复合的使用Play框架的数个功能,包括前面已经了解的表单和数据库,以及这篇文章里要提到的加密和会话。根据应用或站点的复杂程度,用户验证也可以随之变化。这里将介绍用户验证的一个基本实现方式。 加密为了信息安全,用户密码需要加密,而不是保存为明文。Bcrypt算法可以对明文密码进行哈希(Hash)转换。我保存在数据库中的密码,是经过转换转载 2017-02-10 14:33:38 · 257 阅读 · 0 评论 -
play 内置对象
所有添加到renderArgs作用域的对象,都会以变量的形式注入模板。比如,在控制器中将user对象注入模板:renderArgs.put("user",user); 当Action调用render()方法进行模板渲染时,框架会同时将内置对象注入模板,这些内置对象可以直接在模板中使用,例如:${out.print("Hello World! ")}转载 2017-02-10 14:29:00 · 506 阅读 · 0 评论 -
play教程 第九课 play framework实现多文件上传
项目中需要实现多文件上传,遍网寻仙不可得,遂自研之,瞎猫碰个死耗子,找到一条捷径可行。html代码"edit-profile" method="post" enctype="multipart/form-data" action="/Blogs/saveFile"> type="file" multiple id="qfile" name="fileabc"> type=转载 2017-02-10 14:21:09 · 647 阅读 · 0 评论 -
play教程 第八课 Model的用法 play中的JPA
-Model层介绍Model是MVC架构中的又一重量级概念,前文中我们已经讲过了Controller和View,接下来就讲一下这个Model。Model层的作用这里再简单说一下。和其他框架一样,model层主要是用来做数据模型的,另外有几点特别要提一下实体类中的属性需要public修饰 实体类不需要写get/set方法通常我们会在实体类中写数据库操作方法,也就是传统框架中的da转载 2017-02-10 14:18:08 · 430 阅读 · 0 评论 -
play教程 第七课 View的用法 模版的用法
view(视图)是play中MVC三大组件之一。 Play 框架有自己的模板引擎来生成HTML页面,该引擎使用 Groovy 做为表达式语言。Groovy和我们之前使用的JSTL表达式类似,在学习play过程中,无需学习Groovy 所有的知识,你需要了解的只是跟Java 非常相近的一部分,够我们开发过程中使用即可。 Play所有的模板文件都放在 app/views 目录下,所有页面都转载 2017-02-10 14:12:34 · 420 阅读 · 0 评论 -
play教程 第六课 play中的session
Play中对session的处理,和其他框架有明显的区别。在Servlet中,session是存放在服务器端的,并且可以存在于整个会话过程,这样的缺点是万一服务器端出现问题(如超负载、系统运行出错导致异常等),那么用户数据就没了。回想一下,我们以前在开发过程中也会遇到这种问题,用户信息存放在session中,但是因为某种不确定因素,session没了,需要重新登录系统,而这正是play所不倡导的。转载 2017-02-10 14:11:38 · 629 阅读 · 0 评论 -
无共享架构
昨天发了个很什么的随笔,今天把与集群有关的东西搜了搜。整理一下。什么是集群,集群的概念。下面这个BLOG讲的非常清楚:http://blog.csdn.net/ESoftWind/archive/2006/10/19/1341089.aspxweb层次的集群方案讨论,看完javaeye相关的讨论,你会大概了解:http://www.javaeye.com/topic/20298转载 2017-02-13 09:57:38 · 1297 阅读 · 0 评论 -
转载:Play Framework入门引导
=======================原文=========================为了方便群中的Play初学者们,写了一篇入门引导,以帮助初学者尽快了解Play。本文之前发在另一个网站,因为觉得有些不便,还是转到博客上。欢迎来到play的世界,在这里你将体验到与传统SSH开发网站不一样的感受。我将把我学习play的感受与经验分享给大家,希望能对大家(特别是初学转载 2017-02-13 14:08:52 · 270 阅读 · 0 评论 -
中英文对照 介绍Play Framework 框架 安全模块
安全模块h1. Secure module 这个简单的secure模块帮助你为你的应用建立一个简单的认证和认证管理系统。它提供了一个简单的controllers.Secure控制器,它定义了一系列的拦截器,你可以很容易的使用@with注解将它们添加到你的控制器里。The simple **Secure** module help you to set up basic auth转载 2017-01-24 17:52:39 · 469 阅读 · 0 评论 -
play secure模块 验证和授权管理
Play Secure模块放置在play安装目录\modules\secure下,包含在play标准的发布包中。简单的Secure模块被设计用来帮助用户在应用程序中提供验证和授权管理。它提供了一个简单的控制器controllers.Secure,在里面定义了一些拦截器,你能很容易地使用@With注解把这些拦截器加到自己的控制器中。启用Secure模块:在/conf/dependenci转载 2017-01-24 17:51:06 · 785 阅读 · 0 评论 -
Play framework 小知识点
Secure模块提供了简单的验证功能,只要使用@With(Secure.class)标注在Controller上即可!1.需要验证:应用中99%的功能,都必须要登陆后才能访问,将这些功能所在的Controller都添加@With(Secure.class)。当访问Controller中的任何方法时就会进行登录检查。【注:play在Secure类的checkAccess()上使用 @转载 2017-01-24 17:19:22 · 612 阅读 · 0 评论 -
(十)play之yabe项目【测试】
项目测试一个项目,首先得经过一系列的测试(开发人员自测,专门的测试人员测试,客户测试)才能上线运行。尽早发现问题对大家都有好处,作为一个开发人员,自己写的代码最好充分自测后再提交测试。 测试从不同业务层面分:unit test 单元测试Basic Testfunctional test 功能性测试Application Testselen转载 2017-01-24 17:14:38 · 396 阅读 · 0 评论 -
(九)play之yabe项目【发表博文】
发表一篇博文 填充管理页面从主页链接到管理页面时,只简单显示了登陆用户的名称现在对显示的内容加以丰富修改Admin中的index()Java代码 package controllers; import java.util.List; import models.Post; import models.User; import play.转载 2017-01-24 17:10:57 · 297 阅读 · 0 评论 -
(八)play之yabe项目【身份验证】
添加身份验证play提供了一个模块-Secure(安全模块),用来做身份验证 允许Secure模块修改yabe\conf\dependencies.yml,加入对secure的依赖Html代码 # Application dependencies require: - play -> crud - play -> secur转载 2017-01-24 17:09:54 · 566 阅读 · 0 评论 -
(七)play之yabe项目【CRUD】
增加CRUD功能使用CRUD能干嘛?---->在页面对模型进行增删改查操作,这样有什么实际意义呢?不使用CRUD模块的功能,只要模型继承了Model类,就有save(),delete()等方法可以调用了这个CRUD对开发有什么帮助? 用于快速生成一个基本的管理区域,如初始化一个登陆用户,很方便。到目前为止,我对CRUD功能的理解只能这样:提供一个可视化的对象管理界面,转载 2017-01-24 17:08:48 · 425 阅读 · 0 评论 -
(六)play之yabe项目【验证码】
添加验证码功能在Application.java中添加一个action:captcha()Java代码 /** * 添加验证码 */ public static void captcha(String id) { //Images.Captcha继承了InputStream,具备流的功能 Images.Captcha captcha = Im转载 2017-01-24 17:07:43 · 249 阅读 · 0 评论 -
(五)play之yabe项目【评论】
完成显示并发表评论功能编写博客详细内容的页面,该页显示博客的所有评论,并可以添加新的评论! 创建显示评论的action为了显示博文的详细页面,需要在Application.java中增加新的action的方法,这个action叫做show()Java代码 /** * 显示详细的博文评论 */ public static void show(Long转载 2017-01-24 17:05:22 · 328 阅读 · 0 评论 -
(四)play之yabe项目【页面】
主页面显示当前发表博客的完整内容,以及历史博客列表 Bootstrap Job一个play job任务就是一个在没有任何http请求的情况下执行一些特定的方法应用程序在启动时或间隔一定时间后自动执行某个方法应用程序启动便执行基础数据的初始化操作:Java代码 import models.User; import play.jobs.Job; i转载 2017-01-24 17:03:55 · 419 阅读 · 0 评论 -
(三)play之yabe项目【数据模型】
创建项目 play new yabe What is the application name? [yabe] Blog Engine play eclipsify yabe play run yabe Eclipse引入项目file -> import -> General ->Existing Projects into Workspaces -> select r转载 2017-01-24 17:02:39 · 315 阅读 · 0 评论 -
(三)play之快速演示篇
运行playE:\technology-hqh\proj\play-framework>play创建新项目E:\technology-hqh\proj\play-framework>play new tasks~ What is the application name? [tasks]Tasks 启动playE:\technology-hqh\proj\play-fr转载 2017-01-24 16:59:26 · 344 阅读 · 0 评论 -
play之Eclipse调试
转换成Eclipse项目启动命令行,输入play new ,Play会在当前路径下创建项目。输入play eclipsify ,Play会在项目目录中创建eclipse需要的配置文件,将其转换成eclipse项目。在eclipse中导入创建的项目。调试Play转换eclipse项目时,在eclipse目录中生成了三个启动配置:JPDA:连接到已经启动的Play Se转载 2017-01-24 16:58:09 · 1210 阅读 · 0 评论 -
play之入门篇
准备工作首先下载play http://www.playframework.com/download解压到任意目录,将play根目录加入到系统的PATH环境变量中【play解压目录中没有bin目录,直接指定解压目录到Path中即可,也可设置一个PLAY_HOME,然后在Path中引用】jdk1.6以上命令:play version 查看play版本 play本地文档转载 2017-01-24 16:55:33 · 1229 阅读 · 0 评论 -
(八) play之yabe项目 【身份验证】
添加身份验证play提供了一个模块-Secure(安全模块),用来做身份验证 允许Secure模块修改yabe\conf\dependencies.yml,加入对secure的依赖Html代码 # Application dependencies require: - play -> crud - play -> secure转载 2017-01-24 16:49:55 · 528 阅读 · 0 评论 -
play教程 第五课 play中Controller的用法
Controller(控制器)是play中MVC的“C”部分,在 Play 框架中,控制器其实就是一个 Java类,位于 controllers 包中,继承了父类 play.mvc.Controller。 举个简单的例子:public class Clients extends Controller { public static void show(Long id) {转载 2017-02-10 14:09:49 · 826 阅读 · 0 评论 -
play教程 第四课 routes文件的使用
路由配置——routes配置文件的使用routes配置文件是play中很棒的一个文件,给我们提供了极大的方便,也正是这个文件的妙用,助力了play的REST风格。简单讲,routes配置文件的目的就是给出地址栏一个url,通过routes文件要找到相应的controllers层下面的方法进行处理。-语法routes文件包含三个主要部分:part1——HTTP转载 2017-02-10 14:09:00 · 461 阅读 · 0 评论 -
Play framework基本概念、请求处理流程、开发生命周期
Play应用程序使用MVC架构模式来作为Web开发的基础架构。MVC架构模式把应用程序分成三层:表现层,视图层,模型层下图是play framework在MVC层次上对于http请求的处理流程:请求生命周期:Play framework是无状态的并且是面向request、response的。所有的请求都遵从下述的处理流程。framework接收到一个http请求Rout转载 2017-02-06 13:23:47 · 707 阅读 · 0 评论 -
Play framework HTTP Route路由
路由组件负责把进来的HTTP请求转换成Controller控制器下的一个static,plubic方法,并调用方法提供服务。一个HTTP请求在MVC框架下被视作一个事件,它主要包含2部分信息:请求路径、包含query string(如/client/14, /photo/list)和HTTP 方法(GET, POST, PUT, DELETE)REST (Representatio转载 2017-02-06 13:22:34 · 946 阅读 · 0 评论 -
play secure模块 验证和授权管理
参考:http://www.playframework.org/documentation/1.2.3/securePlay Secure模块放置在play安装目录\modules\secure下,包含在play标准的发布包中。简单的Secure模块被设计用来帮助用户在应用程序中提供验证和授权管理。它提供了一个简单的控制器controllers.Secure,在里面定义了一些拦截器,你能很转载 2017-02-06 13:21:43 · 291 阅读 · 0 评论 -
Play tag标签,模板、tag中直接调用后台静态java方法
见Play Framework template engine模板引擎&模板隐含变量,play标签可以自定义变量并传值。tag变量命名时以下划线_开始,传值时,省略下划线,多个变量之间用逗号分隔,如下Html代码 #{tag arg1:"${arg1}", arg2:"${arg2}" /} 如果标签需要的值,和标签本身在哪里被使用无关,即标签展转载 2017-02-06 13:20:33 · 770 阅读 · 0 评论 -
play plugin插件 实现类似Servlet中的拦截器效果
play plugin和module的区别见:play Modules & 使用成熟的Java模块、框架、Spring & 模块和插件的区别创建插件的步骤:1,创建一个从play.PlayPlugin继承的类,然后覆盖其中的一些方法。2,在conf目录下的play.plugins文件中注册这个插件,格式如:1003:myPackage.MyPlugin.这里的数字是插件被调用的转载 2017-02-06 13:19:33 · 435 阅读 · 0 评论