你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629
1.绑定HTTP参数到JAVA方法里的参数。
使用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>
2.重定向到一个action调用相应的Java方法。
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>
3.当传递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);
在模板中JAVA本地名字中检索对象,这样可以少写不少代码。
4. 更高效的JPA
在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);
- }
5. 简单的文件上传管理
文件上传管理在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) {
- ...
- }
还能更简单么?
via:http://blog.sina.com.cn/s/blog_60fcb5a10100gt1w.html
playframework获取当前会话的所有session,获取请求的所有参数
}
你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629的更多相关文章
- ubuntu16.04——WingIDE安装 操作服务器是一件很好玩的事情
1.在服务器上部署环境时,区分linux 系统和winddos系统 2.下载安装包: 3.输入命令操作 4.进入相对应的目录下: 5.命令 6.发生错误,更新环境 7.安装成功
- 很多事情就像看A片,看的人觉得很爽,做的人未必。
http://m.jingdianju.com/wzgs/shenghuo/201307185135.html 转载自: 从这个角度上来说,我不太赞成过于关注第一份工作的薪水,更没有必要攀比第一份工作 ...
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转
关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...
- 00-01.PHP 网站假设win7配置自己的IIS服务器亲自做的图文很详细 [转 - 赞 ]
win7配置自己的IIS服务器亲自做的图文很详细 分步阅读 跟人网站爱好初学者必看的win7系统配置自己的IIS,可以在你自己的电脑上配置网站服务器发不到网上,下面就跟着我的步骤一起做吧100%成功. ...
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...
- 编写高质量代码改善C#程序的157个建议——建议144:一个方法只做一件事
建议144:一个方法只做一件事 “单一职责原则”(SRP)要求每一个类型只负责一件事情.我们将此概念扩展到方法上,就变成了:一个方法只做一件事. 回顾上一建议的代码,LocalInit和RemoteI ...
- 孤陋寡闻了吧?Python 居然可以做这30件神奇好玩的事情(附教程)
知乎上有个浏览超过400万的问题:可以用 Python 编程语言做哪些神奇好玩的事情? 我先举一个很不专业的栗子...... 然后再找几个人抬一堆例子来...... 不是很稀饭<复联>嘛, ...
- 我用ABAP做过的那些无聊的事情
国庆大假马上就要来临了,我们聊点轻松的话题,关于假期. Jerry的成都同事李贝宁(Li Ben), <SAP成都研究院李三郎:SCP Application Router简介>的作者,有 ...
- 常用的sublime text插件(很爽哦)
个人比较懒,平时喜欢用webstorm,但是因为webstorm打开实在太慢了,并且太看设备,所以本人编辑简单的文件依然会选择使用sublime,虽然网上有很多关于此类插件的分享了,但是感觉都是片段, ...
随机推荐
- windows 获取以及更改CMD控制台编码[转]
本文转自 http://blog.sina.com.cn/s/blog_794b1d96010136yy.html 命令 chcp 功能:显示或设置活动代码页编号 CHCP [nnn] nnn ...
- Qt编写自定义控件二动画按钮
现在的web发展越来越快,很多流行的布局样式,都是从web开始的,写惯了Qt widgets 项目,很多时候想改进一下现有的人机交互,尤其是在现有的按钮上加一些动画的效果,例如鼠标移上去变大,移开还原 ...
- 百度地图api根据定位获取附近商家(只获取屏幕内)
根据中心点坐标计算出屏幕2个点(一个最低经纬度,一个最高经纬度),判断这两个点中间的所有坐标的商家..考虑屏幕分辨率之类 移动地图中心点变动,如何异步刷新,判断商家是否已经存在..等... 百度地图a ...
- python 字符串查找
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法. 1 find()方法: )##从下标1开始,查找在字符串里第一个出现的子串:返回结果3 ...
- java框架篇---spring IOC 实现原理
IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用 ...
- JS文件放在头还是尾
目前绝大部分的浏览器都是采取阻塞方式(Scripts Block Downloads)加载Javascript文件的:javascript在头部会阻止其他元素并行加载(css,图片,网页):这种机制的 ...
- Teambition可用性测试记
引言:最开始知道Teambition是几个月前,当时是想找一个团队协作工具.Teambition是候选之一,它的界面设计给我留下了印象.后来得知其背后年轻的创始团队还是让我有些小惊讶的.这次通过朋友介 ...
- 网络爬虫urllib2 tornado
百度不支持用tornado请求,可以用美团开放API 测试. import tornado.httpclient def fetch(url): http_header={'User-Agent':' ...
- Nodejs建站笔记-注册登录流程的简单实现
1. 使用Backbone实现前端hash路由 登录注册页面如下: 初步设想将注册和登录作为两个不同的url实现,但登录和注册功能的差距只有form表单部分,用两个url实现显然开销过大,所以最终方案 ...
- Bucky – 免费开源的实时用户监控工具
Bucky 是一个开源的实时用户监控工具,用于衡量用户在浏览器中使用 Web 应用程序时的性能.它可以自动测量你的网页需要多长时间来加载,Ajax 请求需要多长时间和各个函数需要实行多久. 您可能感兴 ...