Java Web的拯救者-PlayFramework
Java Web的拯救者-PlayFramework
即使有了SSH框架,Java Web开发依然不是人干的活:
密密麻麻的配置文档
配置个IDE还需要Google半天,如果用百度还能可能被坑
跑通个框架对于新手完全靠运气
重启,重启,重启....[doge]
终于有个法国大神写了一个PlayFramework框架出来解救各位Java码农。传说有了它,放个猴子在电脑面前都会编程了!
首先说明一下,这里所说的PlayFramework的版本是1.2.7,因为这个版本才是过来拯救Java程序员的,PlayFramework 2是去捣乱Scala世界的。
PlayFramework的优点:
- 实时编译,不需重启,写好代码,直接刷新浏览器就能看到结果!
- 完善的应用框架,从表现层到持久层完整的支持,忘记SSH吧!
- 约定优于配置,而且就一个配置文件!
- 简洁的HTTP数据绑定!
- 内置强大的工具类库,简化一切繁琐的传统问题:JSON、XML、WebService、安全认证、定时任务、缓存、邮件、AJAX……
- 支持模块,模块学习成本超级低!
- 简单的HTTP无状态架构,是HTTP服务器集群不用再折腾Session了,同时百万用户在线不再是梦想!
- 友好的出错提示
- 和IDE完美整合:Eclipse、Intellj IDEA、NetBeans...
还不够?!那就自己安装一个慢慢体会吧!
下面再来几个片段,展示一下Play的哲学理念:
HTTP数据绑定
在Play里面获取HTTP参数是一件非常简单的事情,只需要将函数参数名称和HTTP参数名称保持一致即可,参数类型会自动转换的。
//请求 http://feichao.org/users/list?age=0&name=feichao
public static void list(Integer age, String name){
User userList = User.find("age = ? and name = ?", age, name).fetch();
render(userList);
}
如果你需要传输自定义的对象,如
public class User {
public String name;
public Integer age;
}
则保存该对象的方法,只用这样写
//请求 http://feichao.org/users/add?u.age=0&u.name=feichao
public static void add(User u) {
u.save();
}
Play的跳转功能
在其他框架里面要做跳转操作时,最起码也需要调用一些函数来实现跳转功能,这样的写法不仅不利于阅读,而且还无法充分利用IDE的重构功能。而Play提供了一种更加优雅的写法:
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); //直接调用show这个函数,框架会自动转换为浏览器的302跳转,酷吧?
}
向模版传参数
在很多框架里面,向模版传递的参数通常要放在一个Map里面传递。如
Article article = Article.findById(id);
User user = User.getConnected();
Map<String, Object> data = new HashMap<String,Object>();
data.put("article", article);
data.put("user", user);
render(data);
但这样的做法在Play眼里实在是傻大粗啊!于是非常优雅的写法诞生了:
Article article = Article.findById(id);
User user = User.getConnected();
render(user, article);
直接将参数传入模版,然后在模版直接获取:
<h1>${article.title}</h1>
<span>${user.name}</span>
看似平淡的代码,其实Play在里面下了大苦工,以后的文章会讲述这门技术。
我的基于 PlayFramework 1.2.x 的几个项目已经全部投入正式运营
该框架相比其他框架,开发和运维都要简单,而且那么久也没发现什么问题
这个框架的性能不算顶尖,考虑到集成了如此多的功能,这种表现属于良好
如果你的项目不大,需要快速开发,Play绝对是个好选择。
本人长期使用该框架,并参与到其模块开发,有问题欢迎提问。
PlayFramework的官网有更加详细的介绍: 查看官方文档