拯救Java程序猿的神器:Play Framework

开发 后端
我们今天的主角就是Playframework~~像玩一样编程, 传说中有了它,放个猴子在电脑前都会编程了!先来看看他都有神马本领吧。

自从选择了做java程序猿啊!!!!!!!

于是走上了不归路啊!!!!!!!!!!

一堆的框架要学啊!!!!!!!!!!!

一堆的配置要写啊!!!!!!!!!!

启动个WAS要半小时啊!!!!!!!

改个BUG还要重启啊!!!!!!!!!

RAD、Eclipse动不动就卡得要死啊!!!!!

写个增删改也要一堆的接口实现设计模式啊!!!

看着人家Ruby程序猿羡慕嫉妒恨啊!!!!!

有木有!!!!!有木有!!!!!!!!

做java的程序猿你伤不起啊啊!!!!!!!

大神们终于看不下去了啊!!!!!!!

放出神器来拯救世界啊!!!!!!!!

咆哮完毕,就请我们的神器隆重登场吧~~~~~

我们今天的猪脚就是~~~~~

Playframework~~

像玩一样编程, 传说中有了它,放个猴子在电脑前都会编程了!

先来看看他都有神马本领:

  • 实时编译,不需重启,写好java代码,F5刷新浏览器就能看到结果!
  • 完善的应用框架,从表现层到持久层完整的支持,忘记SSH吧!
  • 约定优于配置,让繁琐的配置文件见鬼去吧!
  • 依赖管理支持,直接使用maven仓库里丰富的第三方组件!
  • 简洁的HTTP数据绑定,终于可以扔掉FormBean这种恶心的东西了!
  • 强大的工具类库,简化一切繁琐的传统问题:XML、WebService、安全认证、定时任务、缓存、邮件、AJAX……
  • 组件支持,安装新的模块,只需要一个命令!
  • CRUD框架支持,不需代码生成即可获得增删改查支持!
  • 丰富文档,与应用一体化!
  • 还不够?!那就自己安装一个慢慢体会吧!

再来五个很酷的片段,展示一下play的哲学:

1.绑定HTTP参数到java方法参数

在Play框架中,获取http参数是非常容易的事情。只需要将方法参数名与HTTP参数名一致就行了。

比如下面的HTTP请求:

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

只需要在java方法中定义两个名为date和page的参数就可以了

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

Play会自动将HTTP参数转换为方法参数的类型

同样,还可以绑定到java对象类型,比如这样一个对象:

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

一个保存人员的方法只需要这样写:

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

相应的HTML表单代码:

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

2.通过调用相应的java方法实现操作跳转

在Play里面没有JavaServlet的forward方法,但跳转到其他的方法仍然是十分简单。只需要调用相应的java方法,Play会自动生成HTTP跳转的响应。

  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方法,这会产生一个HTTP 302跳转,可有效的避免表单重复提交。

在任何模板文件中,可以使用相同的语法来生成这个链接:

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

生成的HTML代码如下:

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

3.传递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); 

模板中可以直接使用变量名称来获取对象值,减少大量无用的代码

4.增强的JPA支持

JPA可以说是Java里面最好的的对象-关系映射(ORM)API,Play更是将JPA的支持简化到了极致。不需要任何的配置,Play就会自动启动基于Hibernate的JPA实体管理器,而且在代码重载的时候自动神奇的同步。

如果你使用框架提供的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);  

4.文件上传

直接上代码吧!

表单:

  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://www.021128.net/2011/05/29/playframeworkintro/

【编辑推荐】

  1. Play Framework介绍:控制器层
  2. Play Framework介绍:HTTP路由
  3. Play Framework框架安装指南
  4. Play Framework框架概述
  5. Play Framework hotswap及源码分析
责任编辑:林师授 来源: popoer1982的博客
相关推荐

2012-02-28 17:11:31

开发周刊

2012-02-22 17:23:51

JavaPlay Framew

2012-02-23 13:13:00

JavaPlay Framew

2012-03-14 09:29:00

Play framewJava

2012-02-24 09:53:24

JavaPlay Framew

2012-02-20 14:26:48

JavaPlay Framew

2012-02-23 13:48:16

JavaPlay Framew

2012-02-20 14:20:44

JavaPlay Framew

2012-03-14 12:29:55

JavaPlay Framwo

2017-10-27 09:22:31

程序猿脑年龄测试

2012-02-23 12:53:40

JavaPlay Framew

2012-02-22 16:06:42

2011-09-09 17:01:42

框架

2012-02-23 11:06:18

JavaPlay FramewPlay!

2012-02-24 10:57:43

2012-02-20 14:41:30

JavaPlay Framew

2012-02-22 15:51:22

JavaPlay Framew

2012-02-29 10:54:21

JavaPlay Framew

2016-09-22 15:29:41

程序IT加班

2012-04-06 09:27:45

Play!Java
点赞
收藏

51CTO技术栈公众号