接前文:http://www.cnblogs.com/Kassadin/p/4335908.html html
上次講到Play Framework開發環境的配置,以及第一個Hello World程序;本次主要介紹Play Framework的幾個核心概念。 web
每個web開發者對於HTTP request和HTTP response均可以說是耳熟能詳。實際上他們對應了Web開發的基本模型:請求-響應模型。請求響應模型的過程以下: 數據庫
(1)Web瀏覽器經過HTTP協議向服務器端發送request請求 設計模式
(2)Web服務器接收並解析HTTP request請求 數組
(3)Web服務器將請求分發給相應的邏輯處理程序進行處理 瀏覽器
(4)Web服務器將處理結果造成HTML格式的響應體 服務器
(5)Web服務器經過HTTP協議向瀏覽器端發送response響應 架構
(6)Web瀏覽器顯示HTML響應體app
請求響應模型本質上講是HTTP協議在Web開發中的應用,因爲本文的重點不是這裏,如需詳細學習該模型,請查閱HTTP協議相關書籍和文檔。 框架
爲何要提到請求-響應模型呢,由於它是大名鼎鼎的MVC模式的基礎。什麼是MVC設計模式?
M-Model,模型;V-Views,視圖;C-Controller,控制器;MVC模式也就是模型-視圖-控制器模式;許多著名框架如SSH,Ruby on Rails本質上講都是基於MVC設計模式的產物。一樣的,MVC模式也是Play framework的核心。MVC設計模式之因此取得成功,是由於它和HTTP協議的請求-響應模型具備一致性。
(1)Controller,控制器
負責解析HTTP request並分發處理HTTP請求,控制器實現了對Web服務器程序流程的控制,它決定了由哪一個模塊處理HTTP請求,將請求分發給哪一個View顯示,請求哪個Model以獲取數據。它是MVC中業務邏輯的核心。
(2)View,視圖
負責Web應用的顯示邏輯,它主要定義了Web的展示層。
(3)Model,模型
負責Web應用的數據模型,與低層數據庫進行映射,它主要定義了數據邏輯。
MVC設計模式實現了業務邏輯和顯示邏輯的分離,進而實現了Web應用的高內聚性和低耦合性,於是取得了空前的成功。
本部分我將經過實際編寫程序來展現Play Framework的幾個核心概念。
Play 2.0框架庫已經由Scala編寫,採用Scala編寫Web應用相比於Java更加簡潔現代,與框架的吻合度也更好,所以本系列儘可能採用基於Scala的模版進行講解;固然了,框架的思想與語言無關,其實不管是Java仍是Scala能夠說都大同小異(針對Play框架來講的,不是說的語言自己),所以,本系列之後可能會附帶介紹Scala的相關內容。
輸入cd hello進入項目
項目結構如上圖1所示,主要包括了5個主要的文件夾;其中最重要的是app文件夾和conf文件夾。app文件夾主要存放項目代碼,conf文件夾主要存放項目配置文件,public文件夾存放項目公有資源,test文件夾存放測試代碼。
至於其餘文件,如今還用不到,等到以後再慢慢研究好了。
如今對咱們最爲重要的是app文件夾和conf文件。上圖2展現了app文件夾和conf文件夾的內部結構。在app文件夾中包含控制器和視圖兩個子文件夾,這和以前的MVC模式相對應,而conf文件夾下的routes文件是很是重要的配置文件,直接決定了http request的處理方式。
routes文件的每一行由3部分組成:
(1)第一部分,定義了HTTP請求的類型,如GET,POST等
(2)第二部分,相對路徑
(3)第三部分,對應的處理方法(Action)
舉個例子,當瀏覽器以GET方式請求URL:http://localhost:9000/ 時,其請求方式爲GET,相對路徑爲:/,那麼此時就應該將請求轉交給controllers.Application.index方法處理。所以,咱們來看一下index方法。
該程序是控制器的核心程序,在scala中定義了一個單例對象Application類,該單例對象包含一個index方法,該方法調用Action函數,Action函數的功能是:執行函數體,並將函數體相應數據做爲response頭和response體返回給瀏覽器。
[1]Ok. 返回值信息
如圖所示,OK至關於response code = 200,做爲response頭返回給瀏覽器
[2]views.html.index("Your new application is ready.」)
將字符串做爲參數傳遞給views.html.index視圖模版,視圖模版解析參數之後,生成HTML代碼,做爲response體返回給瀏覽器
視圖文件,由HTML+參數組成,解析相關參數可變爲純靜態HTML文件。
現將原視圖文件修改以下:
@(message: String) <html> <head>hello Play</head> <body> <h1>@message</h1> </body> </html>
輸入activator run打開服務器
瀏覽器輸入http://localhost:9000/,咱們獲得了預期結果。
本次咱們主要研究了Play Framework的基本結構和幾個重要文件的做用,分析了Play Framework的工做過程。
下次咱們的主要任務是實現有參數的請求與REST架構的討論。
敬請期待:Play Framework之3: REST架構與Restful Web Service.