<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    shinewang

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

    ?

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

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

    例如:

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

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

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

    也可以直接綁定到類(lèi):

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

    只需要調(diào)用相應(yīng)的Java方法就能方便地重定向到另一個(gè)actionPlay!會(huì)生成正確的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

    ?

    在模板中你可以使用類(lèi)似的符號(hào)來(lái)生成鏈接:

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

    最終生成的HTML

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

    ?

    3. 直接把Java對(duì)象傳遞到頁(yè)面模板

    在大多數(shù)Java框架中,你需要寫(xiě)類(lèi)似下面代碼來(lái)把Java對(duì)象傳遞給頁(yè)面模板:

    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!框架中實(shí)現(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)用分布到多個(gè)JVM

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


    ----------

    Play With Play!系列目錄

    http://m.tkk7.com/shinewang/archive/2008/12/25/248237.html


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

    評(píng)論

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

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

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

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

      回復(fù)  更多評(píng)論
      

    # re: Play with Play! - Play!最酷的5個(gè)功能 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ù)  更多評(píng)論
      

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

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

    主站蜘蛛池模板: 免费看成人AA片无码视频吃奶| 无人视频免费观看免费视频| 国产无遮挡无码视频免费软件| 亚洲无人区一区二区三区| 色多多www视频在线观看免费| 成人免费毛片视频| 亚洲男人的天堂网站| 成年女人毛片免费视频| 亚洲乱码中文字幕在线| 在线观看国产情趣免费视频| 亚洲精品成a人在线观看☆| 女人18毛片a级毛片免费视频| 亚洲AV成人影视在线观看| 97无码免费人妻超级碰碰夜夜| 中文字幕亚洲综合久久综合 | 亚洲欧洲免费视频| 性无码免费一区二区三区在线| 久久亚洲国产欧洲精品一| 91精品免费观看| 亚洲 日韩经典 中文字幕| 亚洲第一黄色网址| 99视频在线免费观看| 亚洲欧洲日本天天堂在线观看| 女人18毛片水真多免费看| 曰韩无码AV片免费播放不卡| 亚洲精品国产品国语在线| 57pao国产成永久免费视频| 亚洲精品无码国产片| 亚洲一级特黄大片在线观看| 国产精品免费看久久久| 亚洲第一男人天堂| 亚洲高清无码在线观看| 四虎国产成人永久精品免费 | 亚洲免费在线视频| 成年男女男精品免费视频网站| 日本免费精品一区二区三区| 亚洲韩国—中文字幕| 免费v片视频在线观看视频| 久久精品视频免费| 亚洲国产成人无码AV在线影院| 国产亚洲精品国产|