倚樓聽風雨

          Chaos 的Java 點滴

          Play Framework介紹1--主要概念

          本文翻譯自Play官方文檔。原文見:http://www.playframework.org/documentation/1.1.1/main

          Play Framework是一個Rails風格的Full-stack Java Web框架。

          MVC模型

          Play應用遵循Web架構使用的MVC架構模式。

          它將應用分離到不同的層中:表現層(Presentation)和模型層(Model)。表現層進一步分為視圖(View)和控制器(Controller)。

          • Model 是應用所處理信息的領域表述(Domain-Specific Representation)。絕大多數應用使用持久化機制如數據庫存儲數據。但是MVC并沒有特別提到數據訪問層,因為它屬于下層,由模型封裝。
          • View 將模型渲染成適合交互的表單,通常是用戶界面。一個模型可有多個不同目的視圖。Web應用中,View通常以HTML,XML或JSON形式呈現,也可能是二進制的Chart。
          • Controller處理事件(通常是用戶動作),并對模型做相應改變。Web應用中,事件通常是HTTP請求:Controller監聽HTTP請求,從其中提取數據,如查詢字符串參數,請求頭,然后改變下層模型對象。

          Play將此三層分在app目錄下的不同package中。

          app/controllers

          一個Controller就是一個Java 類,它的靜態公共方法則是動作(Action)。動作是接收HTTP請求后的Java處理入口點。Controller類實際是面向過程的,非OO。Action從HTTP請求中提取數據,讀或更新Model對象,然后返回一個包裝成HTTP響應(HTTP Response)的結果。

          app/models

          Model是一組具有所有OO特性的Java類。包含數據結構和應用可使用的操作。(譯注:即充血模型)。支持通過JPA持久化。

          app/views

          應用的視圖由Play的模板系統生成。Controller從Model獲取數據,然后使用模板呈現它。此package包含HTML,XML等模板文件,用作動態生成模型的表述(Representation)。

          請求生命周期

          Play是完全無狀態的(stateless),且僅面向請求-應答(Request-Response)。所有請求遵循相同路徑:

          1. 框架收到一個HTTP請求
          2. Router匹配請求和Controller、Action,執行動作方法。
          3. 應用代碼執行
          4. 繪制模型,呈現視圖
          5. 動作方法的結構作為HTTP響應返回。

          應用程序布局

          app目錄

          包含所有可執行的工件:Java源代碼和視圖模板。其下有三個標準package,每個代表MVC的一層。你也能添加你自己的包,如示例的utils包。

          View pacakge可以在分子packages:

          • tags 存儲應用的ta。如可重用的模板片段。
          • 一個Controller一個view目錄,按慣例,每個Controller的相關模板存儲在自己的子目錄中。

          .class文件在哪兒?

          Play在運行時編譯Java源代碼,并將編譯的類緩存在tmp\bytecode目錄下。Play應用的可執行工件時.java源文件,不是已編譯的.class(譯注:包括jar文件)。

          public目錄

          存儲靜態的、由Web服務器直接處理的資源。分為三個子目錄:images,stylesheets和javascripts,分別放圖片,css和js。

          conf目錄

          包含應用的所有配置文件。兩個必須文件為:

          • application.conf: 應用主配置文件,包含所有標準的配置選項。
          • routes:url路由規則定義文件。

          此目錄包含在Java ClassPath中。

          lib目錄

          存放應用依賴的標準Java類庫。此目錄自動添加到Java classpath中。

          開發生命周期

          使用Play開發時沒有編譯,打包和部署這些階段,代之兩個不同環境:用于開發階段的DEV模式和用戶部署階段的PROD模式。

          Java源代碼在運行時編譯和加載。如果Java源文件在應用運行時發生改變,代碼會重新編譯并熱加載(hot-swapped)到JVM中。模板文件也是如此。

          關于DEV/PROD模式

          通過application.mode配置屬性切換DEV或PROD。DEV模式下,Play會檢查并在必要時熱加載。PROD模式為產品做了優化:Java源文件和模板僅編譯一次。

          調試

          開發模式下通過JDPA連接到8000端口遠程調試。(譯注:原文此處很簡略,實際上可遠程調試,也可本地調試)

          posted on 2011-04-18 21:15 chaos 閱讀(700) 評論(0)  編輯  收藏 所屬分類: Play Framework

          <2011年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兴安县| 常州市| 师宗县| 南乐县| 资兴市| 迁安市| 都江堰市| 枣庄市| 广南县| 巴青县| 千阳县| 昌平区| 长泰县| 青阳县| 东乡县| 聊城市| 泌阳县| 郎溪县| 南宫市| 定结县| 连平县| 河池市| 琼海市| 武平县| 屏东县| 体育| 马尔康县| 宜昌市| 竹北市| 蓝山县| 阿克| 彭泽县| 固阳县| 潢川县| 开江县| 平遥县| 方城县| 栾川县| 凤山县| 合水县| 宣武区|