本文通过5
个例子展示了Play!
框架背后的哲学。
1. 绑定HTTP参数到Java方法
通过在Java方法中定义和HTTP参数同名的参数就可以方便的取得HTTP中的参数值。
例如:
/articles/archive?date=08/01/08&page=2
你可以通过定义方法参数来获取date和page的值:
public static void archive(Date date, Integer page) {
List<Article> articles = Articles.fromArchive(date, page);
render(articles);
}
也可以直接绑定到类:
public class Person {
String name;
Integer age;
}
public static void add(Person p) {
p.save();
}
HTML中如下定义:
<form action="/Directory/add" >
Name: <input type="text" name="p.name" />
Age: <input type="text" name="p.age" />
</form>
2. 通过调用Java方法重定向到相应的action
只需要调用相应的Java方法就能方便地重定向到另一个action,Play!会生成正确的redirect response,而不是forward。
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
action的最后重定向到了show action。
在模板中你可以使用类似的符号来生成链接:
<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. 方便的文件上传
在Play!框架中实现文件上传很方便:
HTML form :
<form action="@{Article.uploadPhoto}" method="POST" enctype="multipart/form-data">
<input type="text" name="title" />
<input type="file" id="photo" name="photo" />
<input type="submit" value="Send it " />
</form> Java代码:
public static void uploadPhoto(String title, File photo) {
}
5. 不用任何配置就可以把应用分布到多个JVM
由于应用程序被设计成无状态的,所以你可以简单地在多台服务器上启动同一个应用,然后通过HTTP层面的负载均衡来实现分布式应用。不需要设置一个负债的服务器集群。
----------
Play With Play!系列目录
http://www.blogjava.net/shinewang/archive/2008/12/25/248237.html