拯救Java程序猿的神器:Play Framework
来源:互联网 发布:python人工智能模块 编辑:程序博客网 时间:2024/06/13 12:29
转自:http://developer.51cto.com/art/201202/319726.htm
自从选择了做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) {
- ...
- }
还能更简单吗?
- 拯救Java程序猿的神器:Play Framework
- 拯救Java程序猿的神器:Play Framework
- 玩转 Java Web 应用开发:Play 框架(拯救程序猿神器)
- java的play framework安装配置
- Play Framework 任务计划程序
- java play framework轻量级的后端,eclipse调试
- Java Web框架play framework的下载与环境变量配置
- 给Java开发者的Play Framework(2.4)介绍 Part1:Play的优缺点以及适用场景
- 给Java开发者的Play Framework(2.4)介绍 Part1:Play的优缺点以及适用场景
- 给Java开发者的Play Framework(2.4)介绍 Part3:搭建Play的开发环境
- 给Java开发者的Play Framework(2.4)介绍 Part2:使用Play,Spring,JPA进行开发
- 给Java开发者的Play Framework(2.4)介绍 Part2:使用Play,Spring,JPA进行开发
- play-framework的安装配置
- play framework
- play framework
- play framework
- Play Framework
- play framework
- android 支持的语言列表
- 模拟题集
- Android开发之设置颜色xml值-146种颜色相对应的xml值
- N-Queens II
- Setting up wifi hotspot on Ubuntu 13.10
- 拯救Java程序猿的神器:Play Framework
- 正则表达式和反射
- 设计模式之享元模式
- nginx源码分析--nginx模块解析
- Android中ListView下拉刷新的实现
- 拨钟问题
- MFC中将所画图像保存到图像文件
- [leetcode代码]Evaluate Reverse Polish Notation
- oracle 创建表空间等