`
shinewang
  • 浏览: 36100 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Play with Play! - Play!最酷的5个功能

阅读更多

 

本文通过 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


2
0
分享到:
评论

相关推荐

    HappyEO pro v3.08f.exe

    --- 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)! --- ...

    Play-with-Machine-Learning-Algorithms-master_机器学习_algorithms_

    "Play-with-Machine-Learning-Algorithms-master" 是一个项目,旨在帮助初学者和进阶者深入理解并实践机器学习算法。这个项目覆盖了从基础到复杂的多种算法,是提升机器学习技能的理想资源。 首先,我们要了解机器...

    Play-with-Data-Structures-master.zip

    《Play-with-Data-Structures-master》是一个涵盖了数据结构基础到高级应用的全面教程,包含1-12章的源代码实现。这个课程是学习和深入理解数据结构的理想资源,对于计算机科学的学生、程序员以及对算法和数据结构有...

    Play-with-Algorithms-master_teethwru_algorithms_算法实现_

    "Play-with-Algorithms-master_teethwru_algorithms_算法实现_"这个项目显然旨在帮助学习者深入理解并实践经典的排序算法。以下是对这些算法的详细说明: 1. **希尔排序**:希尔排序是一种改进的插入排序,由希尔...

    Play-with-Algorithm-Visualization

    《Play-with-Algorithm-Visualization》这个项目是关于算法可视化代码的集合,主要源自某在线课程。算法可视化是一种将算法过程以图形方式展示的技术,有助于学习者直观理解算法的工作原理和执行流程。在这个压缩包...

    Algorithm-Play-with-Data-Structures.zip

    Algorithm-Play-with-Data-Structures.zip,我的MOOC课程代码中的游戏数据结构&gt;。更新的内容和做法也包括在内。并用Java语言编写了Java语言。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

    Google Play services com.google.android.gms-7.8.93_(2104405-448)

    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-with-Algorithm-Visualization-迷宫求解问题

    Codes of my MOOC Course &lt;Play with Algorithm Visualization&gt;. Updated contents and more demos or practices are also included. Java 迷宫求解问题 迷宫求解问题 迷宫求解问题 迷宫求解问题 迷宫求解问题

    With-a-single-machine-to-play-music.zip_play

    标题 "With-a-single-machine-to-play-music.zip_play" 暗示了这是一个关于使用单片机进行音乐播放的项目,而描述中提到“在KEIL环境下运行”表明这是基于KEIL开发工具进行的编程实现。 KEIL是Microchip Technology ...

    play框架手册

    但是我们可以在一个完全不同的类里定义一些拦截器,然后在任何控制器里使用@With注释来链接他们。 - 42 - Session和Flash作用域 - 42 - 04.模板引擎 - 43 - 模板语法 - 43 - Expressions: ${…} - 44 - Template ...

    <Play with Linear Algebra>.玩转线性代数.代码

    &lt;Play with Linear Algebra&gt;.玩转线性代数.代码

    抠图工具play_with_pictures破解版

    抠图工具play_with_pictures破解版

    中文翻译Mastering Chess and Shogi by Self_Play with a General

    鄙人仅是资源搬运工,今天看了原版英文后机器之心公众号立马更新了中文翻译...在此申明,中文翻译Mastering Chess and Shogi by Self_Play with a General Reinforcement Learning Algorithm由微信公众号机器之心整理。

    Manning - Play for Java 2014

    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 ...

    Play-with-Algorithms-master.zip

    "Play-with-Algorithms-master.zip" 是一个专为程序员设计的资源包,包含了丰富的数据结构代码实现,旨在帮助我们深入理解和实践这些重要的概念。 首先,让我们从“数据结构”这一概念开始。数据结构是指在计算机中...

    Laravel开发-play-docker-laravel

    Laravel开发-play-docker-laravel 玩Docker

    Play with maps in R!!

    R中地图可视化的小总结 O(∩_∩)O~~

    Algorithm-Play-with-Algorithms.zip

    《算法:玩转算法》是由刘玉波编著的一部关于算法学习的资源包,名为"Algorithm-Play-with-Algorithms.zip"。这个压缩文件包含了深入理解与实践算法的材料,旨在帮助读者提升在计算机编程中的效率,从而更彻底地解决...

    play-cors:Play 的插件! 启用 CORS 的框架

    CORS 插件这个插件为 Scala Play 添加了支持! 框架应用程序。特征为对应用程序的所有请求提供飞行前 OPTIONS 响应。 提供一个 Play 过滤器,它将所需的 CORS 标头附加到每个 HTTP 请求。可配置配置您可能需要的任何...

    POP3接收邮件源码

    5. `LICENSE`:文件包含了许可协议信息,决定了你可以如何使用这些源码。常见的开源许可协议有MIT、GPL、Apache等,具体要看文件内容来确定。 6. `README`:通常是一个简短的文档,概述了项目的目的、安装步骤、...

Global site tag (gtag.js) - Google Analytics