自从选择了做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的参数就可以了
- public static void archive(Date date, Integer page) {
- List articles = Articles.fromArchive(date, page);
- render(articles);
- }
Play会自动将HTTP参数转换为方法参数的类型
同样,还可以绑定到java对象类型,比如这样一个对象:
- public class Person {
- public String name;
- public Integer age;
- }
一个保存人员的方法只需要这样写:
- public static void add(Person p) {
- p.save();
- }
相应的HTML表单代码:
- <form action="/Directory/add" method="POST">
- Name: <input name="p.name" type="text" />
- Age: <input name="p.age" type="text" />
- </form>
2.通过调用相应的java方法实现操作跳转
在Play里面没有JavaServlet的forward方法,但跳转到其他的方法仍然是十分简单。只需要调用相应的java方法,Play会自动生成HTTP跳转的响应。
- 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方法,这会产生一个HTTP 302跳转,可有效的避免表单重复提交。
在任何模板文件中,可以使用相同的语法来生成这个链接:
- <a href="@{Article.show(article.id)}">${article.title}</a>
生成的HTML代码如下:
- <a href="/articles/15">My new article</a>
3.传递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);
模板中可以直接使用变量名称来获取对象值,减少大量无用的代码
4.增强的JPA支持
JPA可以说是Java里面最好的的对象-关系映射(ORM)API,Play更是将JPA的支持简化到了极致。不需要任何的配置,Play就会自动启动基于Hibernate的JPA实体管理器,而且在代码重载的时候自动神奇的同步。
如果你使用框架提供的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);
- }
4.文件上传
直接上代码吧!
表单:
- #{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) {
- ...
- }
还能更简单吗?
原文链接:http://www.021128.net/2011/05/29/playframeworkintro/
【编辑推荐】