随便翻译了一下子,比较关注 Play framework 。Play 有好有坏,不管好还是坏,我就是玩一玩Play。(本人注)
[color=red]1.绑定HTTP参数到JAVA方法里的参数。[/color]
使用PLAY可以很简单的从JAVA代码中检索HTTP参数。只要把方法参数申明成和HTTP参数相同既可。
比如,这个request:
只要把date,page声明成JAVA方法的参数,你就可以检索它们:
PLAY将使用该方法的参数的静态类型,来把HTTP值翻译成JAVA对象。
智能绑定对任何的类都有效。
一个简单的控制器,比如向Person添加一个实例可能会像这样:
HTML表单名称定义的字段:
[color=red]2.重定向到一个action调用相应的Java方法。[/color]
Play框架的forward并不等同Servlet中的forward,它有自己的forward,并且重定向到另一个ACTION非常的简单。只需要调用相应
的JAVA方法,PLAY框架就会生成正确的HTTP “Redirect” response。
注意:在 edit action 结束时,我们如何重定向到 show action。
在任何模板中,你可以使用类似这样的方法来生成连接。
[color=red]3.当传递JAVA对象到模板时,你不需要重复去做类似以下的事情。[/color]
在许多框架中,为了传递JAVA对象到模板中,你需要写如下的代码:
但在PLAY框架中,你只需要这样写就搞定了:
在模板中JAVA本地名字中检索对象,这样可以少写不少代码。
[color=red]4. 更高效的JPA[/color]
在PLAY框架中使用JPA是非常简单的,无需要任何配置,当代码加载时,PLAY框架会使用HIBERNATE自动开启JPA Entity Manager并且神奇的使它同步。
此外,如果你使用play.db.jpa.Model超类,将有助于使你的代码更漂亮。如下:
[color=red]5. 简单的文件上传管理[/color]
文件上传管理在PLAY框架中非常简单。
下面这个HTML form:
对应的JAVA方法:
还能更简单么?
[color=red]1.绑定HTTP参数到JAVA方法里的参数。[/color]
使用PLAY可以很简单的从JAVA代码中检索HTTP参数。只要把方法参数申明成和HTTP参数相同既可。
比如,这个request:
/articles/archive?date=08/01/08&page=2
只要把date,page声明成JAVA方法的参数,你就可以检索它们:
public static void archive(Date date, Integer page) {
List<Article> articles = Articles.fromArchive(date, page);
render(articles);
}
PLAY将使用该方法的参数的静态类型,来把HTTP值翻译成JAVA对象。
智能绑定对任何的类都有效。
public class Person {
public String name;
public Integer age;
}
一个简单的控制器,比如向Person添加一个实例可能会像这样:
public static void add(Person p) {
p.save();
}
HTML表单名称定义的字段:
<form action="/Directory/add" method="POST">
Name: <input type="text" name="p.name" />
Age: <input type="text" name="p.age" />
</form>
[color=red]2.重定向到一个action调用相应的Java方法。[/color]
Play框架的forward并不等同Servlet中的forward,它有自己的forward,并且重定向到另一个ACTION非常的简单。只需要调用相应
的JAVA方法,PLAY框架就会生成正确的HTTP “Redirect” response。
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>
That will generate the following HTML:
<a href="/articles/15">My new article</a>
[color=red]3.当传递JAVA对象到模板时,你不需要重复去做类似以下的事情。[/color]
在许多框架中,为了传递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);
在模板中JAVA本地名字中检索对象,这样可以少写不少代码。
[color=red]4. 更高效的JPA[/color]
在PLAY框架中使用JPA是非常简单的,无需要任何配置,当代码加载时,PLAY框架会使用HIBERNATE自动开启JPA Entity Manager并且神奇的使它同步。
此外,如果你使用play.db.jpa.Model超类,将有助于使你的代码更漂亮。如下:
public void messages(int page) {
User connectedUser = User.find("byEmail", connected());
List<Message> messages = Message.find(
"user = ? and read = false order by date desc",
connectedUser
).from(page * 10).fetch(10);
render(connectedUser, messages);
}
[color=red]5. 简单的文件上传管理[/color]
文件上传管理在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) {
...
}
还能更简单么?