自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Play可以做的5件很酷的事

開發(fā) 后端
通過5個實例,透視 Play 框架背后的哲學。

綁定 HTTP 參數(shù)到 JAVA 方法參數(shù)

用 Play 框架,在 Java 代碼中獲取 HTTP 請求參數(shù)是非常簡單的,只需要聲明方法的參數(shù)名和 HTTP 請求的參數(shù)名一樣就可以了。

例如,這個請求:

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

把 date 和 page 聲明為 Java 方法的傳入?yún)?shù),就可以獲取 HTTP 請求中 date 和 page 參數(shù)的值了:

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

Play 框架會根據(jù)聲明的 Java 參數(shù)類型,自動把 HTTP 請求參數(shù)轉(zhuǎn)換成對應的 Java 對象。

這種自動綁定也適用于 任何的 Java 對象 。

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

一個簡單的用于添加用戶的控制器的 action 方法可以像這樣:

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

對應的 HTML 表單域使用復合的參數(shù)名:

  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> 

通過調(diào)用對應的 Java 方法進行重定向

Play 沒有等價于 Java Servlet forward 命令的方法,但是實現(xiàn)重定向確實非常簡單。只需調(diào)用相應的 Java 方法,Play 就會自動生成正確的重定向( HTTP Redirect )響應給客戶端。

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

注意在 edit 方法的***,是如何使我們重定向到 show 方法對應的頁面的。

在任何模板文件中,你可以利用同樣的語法生成鏈接:

  1. <a href="@{Article.show(article.id)}">${article.title}</a> 

將會生成以下 HTML 內(nèi)容:

  1. <a href="/articles/15">My new article</a> 

不要重復地將 Java 對象傳遞到模板文件

在大多數(shù)的 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,你只須這樣寫:

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

然后你就可以從模板中獲取相應的 Java 變量。這樣剩下了不少重復無用的代碼…

JPA 持久化

JPA 無疑是目前 Java 領域***的對象關系映射框架( ORM )。如果你熟悉 JPA,你會驚訝于它在 Play 框架中變得如此簡單。不需要任何配置,Play 會自動啟動 JPA 實體管理器,并在代碼發(fā)生修改時自動地同步。

而且如果你使用 Play 提供的 play.db.jpa.Model 作為超類時,它會幫助你把代碼寫得更漂亮。來看一下:

  1. public void messages(int page) {  
  2.     User connectedUser = User.find("byEmail", connected()).first();  
  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);  

簡單易用的文件上傳管理

在 Play 框架里文件上傳管理非常簡單。

以下 HTML 表單:

  1. #{form @uploadPhoto(), 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. #{/} 

和這段 Java 代碼:

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

就完成了! 再簡單不過了吧?

原文鏈接:http://play-framework.herokuapp.com/zh/5things

【編輯推薦】

  1. Play Framework hotswap及源碼分析
  2. Play Framework總結性介紹
  3. Play Framework 2.0 RC1發(fā)布 Java Web框架
  4. Java容器類分析之List ArrayList Vector
  5. 有可能挑戰(zhàn)Java優(yōu)勢的四種技術
責任編輯:林師授 來源: Playframework中文小站
相關推薦

2020-05-07 10:26:17

備份文件存儲備份

2015-04-17 09:27:04

程序員

2022-05-13 09:00:00

企業(yè)初創(chuàng)公司技術債務

2022-04-19 07:48:16

JavascriptCSS

2020-04-16 09:35:43

機器學習技術人工智能

2021-12-16 10:42:53

蘋果備忘錄應用程序

2022-05-10 10:39:51

初創(chuàng)企業(yè)技術債務

2011-05-20 08:53:07

HTML 5

2020-06-04 11:49:46

JavaScript開發(fā)代碼

2013-11-08 10:42:31

Ubuntu 13.1

2023-05-08 19:32:56

2011-04-27 09:22:44

Ubuntu 11.0

2021-08-03 10:40:47

混合云云計算應用程序

2020-11-04 07:36:06

Redis二進制數(shù)據(jù)庫

2015-11-23 09:50:17

大數(shù)據(jù)

2024-05-31 08:00:59

2009-03-10 10:01:00

802.11n無線APDARPA

2013-07-11 10:07:46

Fedora 19

2020-03-11 11:04:41

冠狀病毒技術企業(yè)

2011-08-11 10:47:23

點贊
收藏

51CTO技術棧公眾號