Play可以做的5件很酷的事

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

绑定 HTTP 参数到 JAVA 方法参数

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

例如,这个请求:

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

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

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

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

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

  1. public class Person {  
  2.     public String name;  
  3.     public Integer age;  

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

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

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

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

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

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

  1. public static void show(Long id) {  
  2.     Article article = Article.findById(id);  
  3.     render(article);  
  4. }  
  5.    
  6. public static void edit(Long id, String title) {  
  7.     Article article = Article.findById(id);  
  8.     article.title = title;  
  9.     article.save();  
  10.     show(id);  

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

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

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

将会生成以下 HTML 内容:

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

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

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

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

使用 Play,你只须这样写:

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

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

JPA 持久化

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

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

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

简单易用的文件上传管理

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

以下 HTML 表单:

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

和这段 Java 代码:

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

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

原文链接:http://play-framework.herokuapp.com/zh/5things

【编辑推荐】

  1. Play Framework hotswap及源码分析
  2. Play Framework总结性介绍
  3. Play Framework 2.0 RC1发布 Java Web框架
  4. Java容器类分析之List ArrayList Vector
  5. 有可能挑战Java优势的四种技术
责任编辑:林师授 来源: Playframework中文小站
相关推荐

2020-05-07 10:26:17

备份文件存储备份

2015-04-17 09:27:04

程序员

2022-05-13 09:00:00

企业初创公司技术债务

2022-04-19 07:48:16

JavascriptCSS

2021-12-16 10:42:53

苹果备忘录应用程序

2020-04-16 09:35:43

机器学习技术人工智能

2011-05-20 08:53:07

HTML 5

2022-05-10 10:39:51

初创企业技术债务

2020-06-04 11:49:46

JavaScript开发代码

2011-04-27 09:22:44

Ubuntu 11.0

2023-05-08 19:32:56

2013-11-08 10:42:31

Ubuntu 13.1

2020-11-04 07:36:06

Redis二进制数据库

2021-08-03 10:40:47

混合云云计算应用程序

2015-11-23 09:50:17

大数据

2013-07-11 10:07:46

Fedora 19

2009-03-10 10:01:00

802.11n无线APDARPA

2020-03-11 11:04:41

冠状病毒技术企业

2011-12-09 14:50:44

HTML 5

2018-09-10 11:40:26

机器学习数据准备算法
点赞
收藏

51CTO技术栈公众号