shinewang

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            53 隨筆 :: 0 文章 :: 200 評論 :: 0 Trackbacks
          本文通過5個例子展示了Play!框架背后的哲學(xué)。

          ?

          1. 綁定HTTP參數(shù)到Java方法

          通過在Java方法中定義和HTTP參數(shù)同名的參數(shù)就可以方便的取得HTTP中的參數(shù)值。

          例如:

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

          你可以通過定義方法參數(shù)來獲取datepage的值:

          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. 通過調(diào)用Java方法重定向到相應(yīng)的action

          只需要調(diào)用相應(yīng)的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對象傳遞到頁面模板

          在大多數(shù)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!框架中實現(xiàn)文件上傳很方便:

          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. 不用任何配置就可以把應(yīng)用分布到多個JVM

          由于應(yīng)用程序被設(shè)計成無狀態(tài)的,所以你可以簡單地在多臺服務(wù)器上啟動同一個應(yīng)用,然后通過HTTP層面的負載均衡來實現(xiàn)分布式應(yīng)用。不需要設(shè)置一個負債的服務(wù)器集群。


          ----------

          Play With Play!系列目錄

          http://www.aygfsteel.com/shinewang/archive/2008/12/25/248237.html


          posted on 2008-12-25 13:09 shinewang 閱讀(2436) 評論(7)  編輯  收藏 所屬分類: JavaPlay!

          評論

          # re: Play with Play! - Play!最酷的5個功能 2008-12-25 13:17 五月天
          學(xué)習(xí)中  回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-25 14:23 HiMagic!
          semantic url  回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-25 15:00 @beyongwcm
          不錯,有創(chuàng)意  回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-26 14:23 rmn190
          這段時間正在學(xué)OFBiz,初看它源碼時發(fā)出里面有太多的static方法, 今天看到樓主的static方法,似乎明白了些.

            回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-26 14:26 jeasonzhao
          I think there is a lot of efforts needed to integrate Play! into real world.
          So, I am watching.  回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-26 15:08 shinewang
          @jeasonzhao
          確實是這樣,play!很多地方是另起爐灶的,和現(xiàn)有ssh的經(jīng)典架構(gòu)、tomcat等服務(wù)器的集成可能不是很方便。目前使用play!最好還是直接使用它那套東西。當(dāng)然play!也在努力,例如對spring的集成、對其他服務(wù)器的支持就在開發(fā)中。  回復(fù)  更多評論
            

          # re: Play with Play! - Play!最酷的5個功能 2008-12-26 15:15 shinewang
          @rmn190
          play!有很多有爭議的特性,例如大量static方法,但仔細想像是符合使用情形的,還有public的成員變量來模擬實現(xiàn)屬性,這個是為了敏捷的變通,而我們一邊收的教育是使用private,但好用就行,把對程序的控制權(quán)交回給開發(fā)者。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 象州县| 游戏| 彩票| 忻州市| 延边| 苏尼特右旗| 刚察县| 台南县| 泊头市| 玉屏| 宜宾县| 文安县| 同心县| 竹山县| 鄂托克前旗| 资兴市| 丹阳市| 辉南县| 九龙坡区| 四会市| 琼中| 玉环县| 阿克陶县| 永春县| 遂宁市| 十堰市| 衢州市| 小金县| 神木县| 大庆市| 林周县| 迭部县| 申扎县| 江川县| 连山| 微博| 元阳县| 资阳市| 神农架林区| 武山县| 会东县|