本文通过
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
分享到:
相关推荐
--- Support Karaoke play! Can Delete melody tracks in a MIDI file to get a "karaoke play MIDI song"! --- Multi-tracks recording! --- Drum mode! --- Support macro (OTS -- One Touch Setting)! --- ...
一个讲的非常好的数据结构的课程,里面有1-12章的课程源码实现
机器学习从入门到精通
Codes of my MOOC Course <Play with Algorithm Visualization>
Algorithm-Play-with-Data-Structures.zip,我的MOOC课程代码中的游戏数据结构>。更新的内容和做法也包括在内。并用Java语言编写了Java语言。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
各种排序算法 希尔排序 冒泡排序 选择排序 归并排序
It seems that -7YZ builds became -4YZ with Google Play services 6.5. If you were on -7YZ before, you should now install -4YZ. Looks like -8YZ builds are for Android TV. Examples: -014 for Android -...
[强烈推荐, 文档不多, 很快就可以看完, 看完了, 就会使用play了] 目录 MVC应用程序模型 - 7 - app/controllers - 8 - app/models - 8 - app/views - 8 - 请求生命周期 - 8 - 标准应用程序布局layout - 9 - app...
但是我们可以在一个完全不同的类里定义一些拦截器,然后在任何控制器里使用@With注释来链接他们。 - 42 - Session和Flash作用域 - 42 - 04.模板引擎 - 43 - 模板语法 - 43 - Expressions: ${…} - 44 - Template ...
鄙人仅是资源搬运工,今天看了原版英文后机器之心公众号立马更新了中文翻译...在此申明,中文翻译Mastering Chess and Shogi by Self_Play with a General Reinforcement Learning Algorithm由微信公众号机器之心整理。
抠图工具play_with_pictures破解版
With Play you get the power of Scala's strong type system and functional programming model, and a rock-solid Java API that makes it a snap to create stateless, event-driven, browser-based ...
Laravel开发-play-docker-laravel 玩Docker
R中地图可视化的小总结 O(∩_∩)O~~
CORS 插件这个插件为 Scala Play 添加了支持! 框架应用程序。特征为对应用程序的所有请求提供飞行前 OPTIONS 响应。 提供一个 Play 过滤器,它将所需的 CORS 标头附加到每个 HTTP 请求。可配置配置您可能需要的任何...
用单机机演奏音乐,在KEIL运行,准确好用,下载就可以用,还有仿真。简单方便。
Algorithm-Play-with-Algorithms.zip,刘玉波,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
-- List of regexpressions describing the interface (if any) that represent tetherable Wifi interfaces. If the device doesn't want to support tethering over Wifi this should be empty. An example ...
:desktop_computer: 玩NgRx 测试NgRx功能的项目 | :notebook_with_decorative_cover: 堆在项目建设中使用了以下工具: :pushpin: :pushpin: :pushpin: :pushpin: 萨斯 :check_mark_button: 功能性[]实现所有功能 :...
玩谷歌的深梦 要查看我的结果,请访问 setup.sh 在环境中构建Caffe。 它可能也适用于ubuntu。 deepdream.py 这只是的副本 修改了几行以接受参数 ...generateVideo.py 使用opencv生成视频可显示深梦框架的转换。...