你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629

1.绑定HTTP参数到JAVA方法里的参数。

使用PLAY可以很简单的从JAVA代码中检索HTTP参数。只要把方法参数申明成和HTTP参数相同既可。

比如,这个request:

Http代码

  1. /articles/archive?date=08/01/08&page=2

只要把date,page声明成JAVA方法的参数,你就可以检索它们:

Java代码

  1. public static void archive(Date date, Integer page) {
  2. List<Article> articles = Articles.fromArchive(date, page);
  3. render(articles);
  4. }

PLAY将使用该方法的参数的静态类型,来把HTTP值翻译成JAVA对象。

智能绑定对任何的类都有效。

Java代码

  1. public class Person {
  2. public String name;
  3. public Integer age;
  4. }

一个简单的控制器,比如向Person添加一个实例可能会像这样:

Java代码

  1. public static void add(Person p) {
  2. p.save();
  3. }

HTML表单名称定义的字段:

Html代码

  1. <form action="/Directory/add" method="POST">
  2. Name: <input type="text" name="p.name" />
  3. Age: <input type="text" name="p.age" />
  4. </form>

2.重定向到一个action调用相应的Java方法。

Play框架的forward并不等同Servlet中的forward,它有自己的forward,并且重定向到另一个ACTION非常的简单。只需要调用相应

的JAVA方法,PLAY框架就会生成正确的HTTP “Redirect” response。

Java代码

  1. public static void show(Long id) {
  2. Article article = Article.findById(id);
  3. render(article);
  4. }
  5. public static void edit(Long id, String title) {
  6. Article article = Article.findById(id);
  7. article.title = title;
  8. article.save();
  9. show(id);
  10. }

注意:在 edit action 结束时,我们如何重定向到 show action。

在任何模板中,你可以使用类似这样的方法来生成连接。

Html代码

  1. <a href="@{Article.show(article.id)}">${article.title}</a>
  2. That will generate the following HTML:
  3. <a href="/articles/15">My new article</a>

3.当传递JAVA对象到模板时,你不需要重复去做类似以下的事情。

在许多框架中,为了传递JAVA对象到模板中,你需要写如下的代码:

Java代码

  1. Article article = Article.findById(id);
  2. User user = User.getConnected();
  3. Map<String, Object> model = new HashMap<String,Object>();
  4. model.put("article", article);
  5. model.put("user", user);
  6. render(model);

但在PLAY框架中,你只需要这样写就搞定了:

Java代码

  1. Article article = Article.findById(id);
  2. User user = User.getConnected();
  3. render(article, user);

在模板中JAVA本地名字中检索对象,这样可以少写不少代码。

4. 更高效的JPA

在PLAY框架中使用JPA是非常简单的,无需要任何配置,当代码加载时,PLAY框架会使用HIBERNATE自动开启JPA Entity Manager并且神奇的使它同步。

此外,如果你使用play.db.jpa.Model超类,将有助于使你的代码更漂亮。如下:

Java代码

  1. public void messages(int page) {
  2. User connectedUser = User.find("byEmail", connected());
  3. List<Message> messages = Message.find(
  4. "user = ? and read = false order by date desc",
  5. connectedUser
  6. ).from(page * 10).fetch(10);
  7. render(connectedUser, messages);
  8. }

5. 简单的文件上传管理

文件上传管理在PLAY框架中非常简单。

下面这个HTML form:

Html代码

  1. <form action="@{Article.uploadPhoto()}" method="POST" enctype="multipart/form-data">
  2. <input type="text" name="title" />
  3. <input type="file" id="photo" name="photo" />
  4. <input type="submit" value="Send it..." />
  5. </form>

对应的JAVA方法:

Java代码

  1. public static void uploadPhoto(String title, File photo) {
  2. ...
  3. }

还能更简单么?

via:http://blog.sina.com.cn/s/blog_60fcb5a10100gt1w.html

playframework获取当前会话的所有session,获取请求的所有参数

2014年01月15日 play 暂无评论

//获取当前会话的所有session

Map<String, String> sessions=session.current().all();

for (Map.Entry<String, String> ses : sessions.entrySet()) {

System.out.println("key:"+ses.getKey()+",value:"+ses.getValue());

}

//获取请求的所有参数

Map<String, String[]> pms=params.all();

for (Map.Entry<String, String[]> pm : pms.entrySet()) {

System.out.println("key:"+pm.getKey()+",value:"+pm.getValue()[0]);

}

来自为知笔记(Wiz)

时间: 2024-10-12 13:04:31

你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629的相关文章

坚持是一件很难的事情

1,觉得坚持是一件很难的事情有几种情况,第一是预期收益没有想象之中那么高,第二是这件事情并不是自己所喜欢的事情,第三是没有志同道合的朋友,第四只能证明自己本身就是一条懒狗. 2,现在觉得自己可能是比较符合第四点 3,对于我这种人来说,一个比较好的监督其实是要比任何的情况更重要的. 4,眼前的是无尽的迷茫,不知道未来的方向在哪里,只是知道自己需要继续往前走,完全不知道对错. 5,就像坚持跑步这件事情,自己立下flag,又不断的把自己的flag不断的推翻想想就觉得自己恐怖. 6,其实更多的是应该像洛

对于很多人来说,yon的中字符转码是一件很头疼的事情,本佛山网络诵读大赛暨2

RabbiMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才 谷歌在安卓P版本中已经提供了统一的适配方案,可是在安卓O版本上如何适配呢?本文将详细介绍华为安卓O版本刘海屏适配方案.使用华为提供的刘海屏SDK进 [????7878756]?EXT4-fs?error?(device?mmcblk02):?ex4_mb_佛山网络诵读大赛暨2018全民阅读大会(佛山赛区)开赛啦generae_buddy:742

一件很好笑的事情

我是一个比较习惯努力学习的人, 我也会去学习各种可能与我有交集的知识, 就在这几天,我看到以前的一个android网络培训学校开办了C/C++的培训,这是挺好的事, 但是看他们的文件,我就奇怪了. 这份文件,实际上是有问题的. 我不知道,是否有人可以看出这里的问题. 就是C 和 C++ 的问题. 我看出了问题,发了一条留言,表示疑惑, 然后... 二楼就是我的疑惑, 但后,主人就说出了那么让人更疑惑的话. 作为一个教育机构,维护自己的权威性算是比较正常吧, 但是这种胡搅蛮缠式的辩解,真的有用么,

打造百亿美元独角兽必须要做三件事

4 月 16 日消息,创新工场微信公众号上日前发布了一篇创新工场 CEO 李开复日前做了一场分享,讲述春节期间在美国硅谷的见闻. 李开复谈及谷歌.特斯拉.Airbnb 这些企业为何成功.李开复还给创业者建议,称打造百亿美元独角兽,必须要做三件事. 李开复分享的主要内容如下: 我们学到了什么? 在硅谷我们见了 Google 的资深副总裁 Jonathan Rosenberg,他做了一个非常有智慧的分享.在这个分享中我捕捉到几个片段,但其中我认为最重要的是:我们都知道怎样做独角兽,但怎样做一个百亿元

代码简洁之二:函数只做一件事儿

函数应该做一件事.做好这件事.只做这一件事. 所以我们简化代码的一个简单方式就是不断拆分函数(Extract Method),一直拆分,拆分到不能再分出一个函数为止. 拆函数的过程就是一个概括目的.步骤,提取抽象层次动名词的过程.不要做只是解释代码的简单概括,要让函数中的语句处于一个相同抽象层次,如果是更细节的事儿,请再进一步拆分出一个函数出来.让代码拥有自顶向下的阅读顺序. 以我之前写的一个列表显示的action(MVC框架里面的某个控制器里面的一个方法),最开始代码是这样的: // 接收查询

一则微博的感悟——一辈子做一件事

一则微博 很久以前转载过"创业家杂志" 的一则微博,内容如下: 如果你一天做一件事情,说明您是一个能做事的常人: 如果你一个月做一件事情,说明你是一个有点想法的人: 如果你一年做一件事情,说明你是一个想干大事的人: 如果你十年只做一个事情,说明你是一个非凡的人: 如果你一辈子就做一个事情,那你一定是一个伟人. 部分评论 同时有很多精彩的评论,值得我们思考-- 自然成像: 会做一件事,只需要一阵子.做好一件事,需要很长时间.如果想把一件事做到好到极致,那真得做一辈子的打算.理想很重要,行

走出浮躁的泥沼:学会享受学习过程的乐趣 坚持做一件事,直到达到一个境界

http://www.nowamagic.net/librarys/veda/detail/2264学习是一辈子的事情,对于程序员来说更是如此,所以如果没有学会享受学习过程的乐趣,那么学习将会是你人生的一个重压. 以学习数据结构为例.大家都知道,对于程序员而言,数据结构是基础,是必须学会的课程.但是现在很多语言,细节都封装得很好,比如Java..Net.PHP,几乎都不需要你用到多少数据结构与算法的知识,以致于很多人觉得,我就不会数据结构,我还不一样好好工作吗?这就是浮躁的开始了. 的确,对大部

很多事情就像看A片,看的人觉得很爽,做的人未必。

http://m.jingdianju.com/wzgs/shenghuo/201307185135.html 转载自: 从这个角度上来说,我不太赞成过于关注第一份工作的薪水,更没有必要攀比第一份工作的薪水,这在刚刚出校园的学生中间是很常见的. 正常人大概要工作35年,这好比是一场马拉松比赛,和真正的马拉松比赛不同的是,这次比赛没有职业选手,每个人都只有一次机会. 刚进社会的时候如果进500强公司,大概能拿到3k -6k/月的工资,有些特别技术的人才可能可以到8k/月,可问题是,5年以后拿多少?

坚持做一件事,直到达到一个境界

学习是一辈子的事情,对于程序员来说更是如此,所以如果没有学会享受学习过程的乐趣,那么学习将会是你人生的一个重压. 以学习数据结构为例.大家都知道,对于程序员而言,数据结构是基础,是必须学会的课程.但是现在很多语言,细节都封装得很好,比如Java..Net.PHP,几乎都不需要你用到多少数据结构与算法的知识,以致于很多人觉得,我就不会数据结构,我还不一样好好工作吗?这就是浮躁的开始了. 的确,对大部分程序员来说,工作上很多时候不需要用到数据结构.但是你会发现,工作若干年后,你的技术水平会停滞不前,