`
shinewang
  • 浏览: 36904 次
  • 性别: 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语言。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

    Play-with-Algorithm-Visualization-迷宫求解问题

    在“Play-with-Algorithm-Visualization”这个项目中,包含了多个与算法可视化相关的组件。例如,02-Java-Swing-Basics是Java Swing基础的实现,Swing是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 -...

    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由微信公众号机器之心整理。

    biaodigit_Play-with-Data-Struc_1741869875.zip

    同时,文件中的"biaodigit_Play-with-Data-Struc"和"Play-with-Data-Structures-master"可能指向两个版本的资料或项目,"master"通常表示主版本或主分支,意味着这可能是最新的学习资料或项目代码。这样的命名方式...

    Play-with-Algorithms-实验八 回溯法

    MOOC课程《Play with Algorithms》通过实践的方式,引导学生通过编程实践来理解和掌握算法知识。课程中不仅包含理论知识的讲解,还包括大量的编程练习,帮助学生巩固理论,并学会将理论应用到实际问题的解决中去。 ...

    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"。这个压缩文件包含了深入理解与实践算法的材料,旨在帮助读者提升在计算机编程中的效率,从而更彻底地解决...

Global site tag (gtag.js) - Google Analytics