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]);

}

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

  1. ubuntu16.04——WingIDE安装 操作服务器是一件很好玩的事情

    1.在服务器上部署环境时,区分linux 系统和winddos系统 2.下载安装包: 3.输入命令操作 4.进入相对应的目录下: 5.命令 6.发生错误,更新环境 7.安装成功

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

    http://m.jingdianju.com/wzgs/shenghuo/201307185135.html 转载自: 从这个角度上来说,我不太赞成过于关注第一份工作的薪水,更没有必要攀比第一份工作 ...

  3. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  4. 00-01.PHP 网站假设win7配置自己的IIS服务器亲自做的图文很详细 [转 - 赞 ]

    win7配置自己的IIS服务器亲自做的图文很详细 分步阅读 跟人网站爱好初学者必看的win7系统配置自己的IIS,可以在你自己的电脑上配置网站服务器发不到网上,下面就跟着我的步骤一起做吧100%成功. ...

  5. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  6. 编写高质量代码改善C#程序的157个建议——建议144:一个方法只做一件事

    建议144:一个方法只做一件事 “单一职责原则”(SRP)要求每一个类型只负责一件事情.我们将此概念扩展到方法上,就变成了:一个方法只做一件事. 回顾上一建议的代码,LocalInit和RemoteI ...

  7. 孤陋寡闻了吧?Python 居然可以做这30件神奇好玩的事情(附教程)

    知乎上有个浏览超过400万的问题:可以用 Python 编程语言做哪些神奇好玩的事情? 我先举一个很不专业的栗子...... 然后再找几个人抬一堆例子来...... 不是很稀饭<复联>嘛, ...

  8. 我用ABAP做过的那些无聊的事情

    国庆大假马上就要来临了,我们聊点轻松的话题,关于假期. Jerry的成都同事李贝宁(Li Ben), <SAP成都研究院李三郎:SCP Application Router简介>的作者,有 ...

  9. 常用的sublime text插件(很爽哦)

    个人比较懒,平时喜欢用webstorm,但是因为webstorm打开实在太慢了,并且太看设备,所以本人编辑简单的文件依然会选择使用sublime,虽然网上有很多关于此类插件的分享了,但是感觉都是片段, ...

随机推荐

  1. java之容器

    先来一张容器的API框架图,我们在java中所学的所有知识,都是根据下面这张图来学习的.... 容器API: 1.Collection接口------定义了存储一组对象的方法,其子接口Set和List ...

  2. jetty服务器的安装和部署、新增到开机启动服务

    Jetty的首页地址是http://www.mortbay.org/jetty/,点击Downloads进入下载介绍页面,由于Jetty7之后,托管服务有Eclipse接替,所以jetty6.1之前( ...

  3. 2 个UserControl 的传值问题

    问题描述:有2个UserControl:UserControl1 里有一个Button,UserControl2 里面有一个TextBox,这2个控件都加载到了主窗体Form1 上.要求的是,点击 U ...

  4. Using the Cordova Camera API

    使用ionic开发一款android或ios应用,估计少不了使用到Camera API,这里记录下使用过程. 创建空的ionic应用 ionic start myTabs tabs 通过cd demo ...

  5. jquery的ajax提交时loading提示的处理方法

    方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){     $("#loading").ajaxStart(function(){   ...

  6. c++ 模板元编程的一点体会

    趁着国庆长假快速翻了一遍传说中的.大名鼎鼎的 modern c++ design,钛合金狗眼顿时不保,已深深被其中各种模板奇技淫巧伤了身...论语言方面的深度,我看过的 c++ 书里大概只有 insi ...

  7. Android代码优化工具——Android lint

    作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常 ...

  8. css的两种引用方式 link和@import

    学习web开发的最大乐趣就是不断的发现自己以前不曾见过的东西,这些东西对于我来说是那么的新鲜有趣. 比如说今天偶尔研究别人的网站,就发现了有趣的东东. 当点开此网页的css时(这个css文件命名方式就 ...

  9. Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

    在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下: 1.敌人能够自动跟随主角 2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻 ...

  10. (非妙味3):浏览器window事件:及浏览各种尺寸介绍

    (触发)window.onload;  window.onscroll;   window.onresize; (兼容)网页可视区尺寸.网页全文尺寸.滚动距离 (实例)广告块高度动态居中.回到顶部   ...