Play 可以做的 5 件很酷的事

Play 可以做的 5 件很酷的事

本章译者:@Playframwork

通过 5 个实例,透视 Play 框架背后的哲学。

绑定 HTTP 参数到 JAVA 方法参数

用 Play 框架,在 Java 代码中获取 HTTP 请求参数是非常简单的,只需要声明方法的参数名和 HTTP 请求的参数名一样就可以了。

例如,这个请求:

/articles/archive?date=08/01/08&page=2

把 date 和 page 声明为 Java 方法的传入参数,就可以获取 HTTP 请求中 date 和 page 参数的值了:

public static void archive(Date date, Integer page) {
    List<Article> articles = Articles.fromArchive(date, page);
    render(articles);
}

Play 框架会根据声明的 Java 参数类型,自动把 HTTP 请求参数转换成对应的 Java 对象。

这种自动绑定也适用于 任何的 Java 对象 。

public class Person {
    public String name;
    public Integer age;
}

一个简单的用于添加用户的控制器的 action 方法可以像这样:

public static void add(Person p) {
    p.save();
}

对应的 HTML 表单域使用复合的参数名:

<form action="/Directory/add" method="POST">
    Name: <input type="text" name="p.name" />
    Age: <input type="text" name="p.age" />
</form>

通过调用对应的 Java 方法进行重定向

Play 没有等价于 Java Servlet forward 命令的方法,但是实现重定向确实非常简单。只需调用相应的 Java 方法,Play 就会自动生成正确的重定向( HTTP Redirect )响应给客户端。

public static void show(Long id) {
    Article article = Article.findById(id);
    render(article);
}

public static void edit(Long id, String title) {
    Article article = Article.findById(id);
    article.title = title;
    article.save();
    show(id);
}

注意在 edit 方法的最后,是如何使我们重定向到 show 方法对应的页面的。

在任何模板文件中,你可以利用同样的语法生成链接:

<a href="@{Article.show(article.id)}">${article.title}</a>

将会生成以下 HTML 内容:

<a href="/articles/15">My new article</a>

不要重复地将 Java 对象传递到模板文件

在大多数的 Java 框架中,为了把 Java 对象传递到模板文件,通常你需要类似这样写:

Article article = Article.findById(id);
User user = User.getConnected();
Map<String, Object> model = new HashMap<String,Object>();
model.put("article", article);
model.put("user", user);
render(model);

使用 Play,你只须这样写:

Article article = Article.findById(id);
User user = User.getConnected();
render(article, user);

然后你就可以从模板中获取相应的 Java 变量。这样剩下了不少重复无用的代码…

JPA 持久化

JPA 无疑是目前 Java 领域最佳的对象关系映射框架( ORM )。如果你熟悉 JPA,你会惊讶于它在 Play 框架中变得如此简单。不需要任何配置,Play 会自动启动 JPA 实体管理器,并在代码发生修改时自动地同步。

而且如果你使用 Play 提供的 play.db.jpa.Model 作为超类时,它会帮助你把代码写得更漂亮。来看一下:

public void messages(int page) {
    User connectedUser = User.find("byEmail", connected()).first();
    List<Message> messages = Message.find(
        "user = ? and read = false order by date desc",
        connectedUser
    ).from(page * 10).fetch(10);
    render(connectedUser, messages);
}

简单易用的文件上传管理

在 Play 框架里文件上传管理非常简单。

以下 HTML 表单:

#{form @uploadPhoto(), enctype:‘multipart/form-data‘}
    <input type="text" name="title" />
    <input type="file" id="photo" name="photo" />
    <input type="submit" value="Send it..." />
#{/}

和这段 Java 代码:

public static void uploadPhoto(String title, File photo) {
   ...
}

就完成了! 再简单不过了吧?

时间: 2024-10-05 05:11:33

Play 可以做的 5 件很酷的事的相关文章

当你无聊时可以做这15件高效的事

有很多有意义的事可以在无聊时做.在 Quora 上,用户 Visakan Veerasamy 建议发挥“消除”的作用.我把这一理论更进一步,扩大到包括两个其他类型的活动.基于消除.消费.工作的原则,在无聊的时候,有15件高效的事可以做. 1. 消除混乱 你不像自己预期的那样多产的一个原因,可能是你有太多乱七八糟的事情.无聊时可以做的有意义的事情,包括整理你的桌子.从书架上取下你从来不读的书.删除你智能手机上从来不用的应用.你不仅仅是在做一些清扫工作,这些事情可能会给你能量,让你能够开始后面的更大

我打赌你不知道苹果手机能做这十件事

苹果手机除了一些常用功能之外,还能做许多不一样的事情. 下面是iPhone手机上一些很酷的功能,但不同机型的iPhone和不同版本的ios略有不同. 1. 查询头上飞过的飞机. 这是一件很简单的事情,你只需要询问Siri:“天上有什么飞机飞过?”然后你会看到一个弹出的列表,上面是关于正在飞过的飞机的详细信息. 2. 命令Siri大声朗读短信 如果你手头正有事,或者你正在路上开车,这个功能是很有用的,而且使用也简单. 按住“Home”按钮.当你听到嘟嘟声时,你可以向Siri下命令:“朗读我的短信.

想提升工作效率,就別再做这七件事

试想一位小公司老板每日孜孜不倦地工作,为何不能从为数众多的竞争者脱颖而出? 一位创业家可以不眠不休一天工作24 小时,整整一周不休假. 然而,时间有限,且竞争者却永远可以投入更多钱与心力,让竞争更剧烈.那么,为什么某些小型新创公司可以完成许多大型企业无法完成的事情呢? ●Instagram──只有13 名员工却被Facebook 用几十亿买下的公司. ●Snapchat──只有30 名员工却拒绝科技巨人Facebook.Google 的并购交易. 它们的成功部分来自于幸运──其余则是因为效率 .

手机被偷前必做的两件事

很多"专家"都曾经发过<手机被偷后必做的N件事>这类教程,比如:致电运营商挂失手机号:致电银行冻结手机网银:手机解绑支付宝:微信冻结账号:修改微博.微信.QQ等密码:找手机运营商补手机卡:等等等等,实际上,这类教程所要求的事情都不是必要的,亡羊补牢不如未雨绸缪,真正要做到丢失后手机安全,只需要事前做两件事情:设置指纹密码和SIM卡密码.对于苹果用户来说,还需设置"查找我的iPhone"和iCloud两步验证. 以iPhone为例,一般都会设置"

安装 Kali Linux 后需要做的 20 件事

我在本文中整理出了安装一份全新的Kali Linux后总是要做的若干件事情.由于我有多台笔记本电脑和工作站,所以尽量扩大下列操作步骤的适用范围,以满足每个人的需求.这是我在安装Kali Linux后做的20件事情.你的需求可能全然不同.要是有什么建议,欢迎留言告知.不用注册即可留言,欢迎反馈.发表观点. 本文含有我觉得有用的每一件事情.本文分为三大部分: 专门针对Kali用户 Kali Linux是来自Debian的一个特殊版本,Kali Linux同样存在Debian Linux的许多问题.这

新购买的vps应该做的几件事情

1. 修改root密码      passwd   root 2.新建用户     useradd  vinentguo 3.配置免密码登陆 .使用新建用户登陆vps. mkdir ~/.ssh/chmod -R ~/.ssh/touch ~/.ssh/authorized_keys  && chmod 644 ~/.ssh/authorized_keys将公钥 放入 新建的 authorized_keys 文件中 4.禁止root登陆 sudo vim /etc/ssh/sshd_con

赘总当你做错一件事的时候连呼吸都是错。

左庄自篆资专琢卓灼 当你做错一件事的时候连呼吸都是错. http://passport.baidu.com/?business&un=vip&un=%E6%96%B0%E9%BE%99%E7%BE%8E%E5%A5%B3%E5%93%AA%E5%A5%BD%E6%89%BE#0 http://passport.baidu.com/?business&un=vip&un=%E8%8D%A5%E7%BB%8F%E7%BE%8E%E5%A5%B3%E5%93%AA%E5%A5%B

当开发者产生一个伟大的想法之后应该做的10件事

当你正和家人享受一个悠闲的午后,一个不错的想法突然出现在你的脑海里.不管它是一个 App 还是服务,或是一个新的概念.只要你把这个想法付诸实践,它就可能会成为下一个 uber,甚至会改变世界. 那接下来你应该怎么做呢?这里有一个指南,会告诉你在决定把自己这个想法实现之后应该做的事情. 1. 起一个名字 在你决定开始之后,要做的第一件事就是为你的产品起一个名字,这个名字是有多重要大家心里都很清楚,如果你并不擅长起名字,你可以通过一些工具来扩展你的思路,如 visual thesaurus, Wer

新手学习SEO要做的七件事是什么?

学习SEO可能不那么先进的编程,学习SEO不可能掌握网页设计,学习SEO不需要学习SEO DIV + CSS;不是一个困难的任务,但是在学习过程中,如果你想掌握SEO,那么我们要做的几件事. 1.学习SEO需要持之以恒的精神.为什么 ?学习SEO要有持之以恒的精神?SEO是一个长期的工作,因为它是与搜索引擎这个工作密切相关,搜索引擎收录站点,将继续增加网站的权重,可以提高网站关键词的排名,这是一个不变的算法.所以即使我们有一个强大的SEO技巧,我们仍然需要更新网站内容,不断优化网站的布局,继续发