play framework学习(一)
来源:互联网 发布:网络极客是什么 编辑:程序博客网 时间:2024/06/02 19:27
首先明白一点,play framework采用的是MVC模式,很类似于php框架中的thinkphp
在app/conf/routes中配置的是url路由。
HTTP方滕可以是任何HTTP所支持的有效的方滕。GET,POST,PUT,DELETE,HEAD
如果使用*作为方法,则这个route可以和任何请求的方法相匹配
* /clients/{id} Clients.show
这个例子中,{id}是变量,如果请求的url符合/clients/{id} 则调用Clients.show这个方法。
控制器,controller
在 Play 框架中,控制器其实就是一个 Java 类,位于 controllers 包中,继承了父类 play.mvc.Controller。
在这个示例控制器中,每一个被声明为 public static 的方法被称为 Action,通过调用render方法来结束执行并显示一个页面模版
POST请求来自某个表单提交,数据编码方式为:x-www-urlform-encoded.
play框架把GET或者POST提交的参数保存在Map<String,String []>类型的数据中,Map的key就是参数名。
有两中取得参数的方式: /client?id=123
一、params.get('id),如果要做类型转化可以是,Long id=params.get('id',Long.class)
需要提到一点,java中的基本数据类型都play都可以帮我做转换。日期的话,只有如下几中类型
日期数据(Date)支持以下几种格式的自动转换(需要在conf的application.conf文件中配置):
yyyy-MM-dd’T’hh:mm:ss’Z' // ISO8601 + timezone
yyyy-MM-dd’T’hh:mm:ss" // ISO8601
yyyy-MM-dd
yyyyMMdd’T’hhmmss
yyyyMMddhhmmss
dd'/‘MM’/'yyyy
dd-MM-yyyy
ddMMyyyy
MMddyy
MM-dd-yy
MM'/‘dd’/'yy
二、直接在Action中,
public static void show(Long id){//参数名必须是id,得和url中的一样 System.out.println(id);}如果某个参数有多个值,可以用数组的形式,比如是
public static void show(Long[] id)//也可以是集合。List<Long> id
文件的上传
在 Play 框架中处理文件上传是非常简单的事,一个 multipart/form-data 编码的请求发送到 Play 服务器,Play 框架会自动为该上传文件生成一个 File 对象:
public static void create(String comment, File ttachment) { String s3Key = S3.post(attachment); Document doc = new Document(comment, s3Key); 。。。。。。。
POJO 对象的绑定
Play 可自动将模型类(model,数据库有关的阿)与请求参数绑定,绑定的规则是类属性名与参数名一致:
public static void create(Client client ) { client.save(); show(client);}例如一个用来创建客户的请求链接如:
?client.name=Zenexity&client.email=contact@zenexity.fr
Play 会自动创建一个 Client 的实例,并将对应的参数赋值给该实例的属性
render方法。执行完Action之后需要页面模版来输出。
模板文件是需要数据来执行的,我们可以通过 renderArgs 方发来向模板输送对象:
public class Clients extends Controller { public static void show(Long id) { Client client = Client.findById(id); renderArgs.put("client", client);//"client"是为这个数据命名。//除此之外,还可以用render(client)的方式传递数据,不过就没法命名了,默认为"client" render();}然后在模版中,我们就可以用${params}来取数据。
你可以自己手动指定被用来渲染的模版
render("Clients/showClient.html", id, client);//多个参数哦
重定向:redirect("http://blog.csdn.net/gausszh");
conf/application.conf这个文件要好好看,有很多很NB的运用都在这里配置。
数据库配置方面,可以使用内存数据库、文件数据库、mysql、postgresql
天然就带数据库连接池。还有强大的Hibernate
memcached也有
设置页面缓存时间
JPA Java Persistence API 定义了很多ORM,play 框架用的JPA是很著名的Hibernate
package models; import java.util.*;import javax.persistence.*; import play.db.jpa.*; @Entitypublic class Post extends Model { public String title; public Date postedAt; @Lob public String content;//lob提示play @ManyToOne public User author;//多个Post对应一个author public Post(User author, String title, String content) { this.author = author; this.title = title; this.content = content; this.postedAt = new Date(); } }
现在说说play的模版。play的模版使用groovy作为表达式语言
<p>%{name="张晓"+"润";}% ${name[0..2]}</p>其中,%{ groovy code}% ${params}。groovy也有形似python的数组切片,name[0..3]从下标开始到下标2,是包含关系。
发送邮件
在app下创建一个notifiers文件夹,必须是play.mvc.Mailer的子类。(用html发送邮件)发送邮件的模版位于views下
// app/controllers/application.javapackage notifiers;import play.*;import play.mvc.*;import java.util.*;public class sendMail extends Mailer {public static void welcome(String name,String email){setSubject("Welcome %s",name);addRecipient(email);setFrom("gausszh<gauss.zh@gmail.com>");send(name);//类似与controllers中的render,}}
// app/views/welcome.html<html><body><p>Welcome ${name}</p></body></html>然后我们在controllers中调用
package controllers;import play.*;import play.mvc.*;import java.util.*;import notifiers.sendMail;//引入邮件定义的那个文件import models.*;public class Application extends Controller { 。。。。。 public static void trySendMail(String name,String email){ sendMail.welcome(name, email); }}
、
创建模版tag,位于views/tags/XXX.html
- play framework学习(一)
- Play! Framework 学习笔记(一):初识Play
- Play! Framework 学习笔记(一):初识Play
- Play! Framework 学习笔记(一):初识Play
- Play! Framework 学习笔记(一):初识Play
- Play framework框架(一)
- Play framework 学习(tips)
- play framework学习(paginate)
- play framework学习(CRUD)
- play framework学习(secure)
- play framework学习(mysql)
- play framework学习(stmp)
- play framework学习(paginate)
- Play framework 2.0入门教程(一)
- Play Framework (一)
- play framework (一)
- Play framework 框架入门学习文档(play-1.2.3)
- Play framework学习(导入默认数据)
- java使JFrame的操作,居中 设置标题等
- 获取进程和线程id函数简介
- poj2142
- 用递归方法求n的阶乘。
- MFC中Cfile类操作文件的方法
- play framework学习(一)
- PCB布线点滴
- 用递归方法求n阶勒让德多项式的值。
- javamail 找回密码
- Spring配置中 bean上的属性parent的作用
- 【Tech-Android-Other】Android性能优化
- Eclipse中插件安装方法
- YII- FRAMEWORK- 中验证码的使用
- 用递归方法求和。