初学Play Framework(一)
下載安裝jdk1.5以上,我用的是1.7
然后下載play-1.2.7,版本可用別的,將play的根目錄直接添加到環境變量Path
打開命令行?輸入“play?new?test”(名字自定義)
然后會提示是否確認你的項目名,直接enter
再輸入 “play?run?test”
打開?eclipse?import項目,會出現很多文件夾,play框架運用的是MVC模式
app文件夾便存放了Model、?View、Controller這三層
app/controllers?
?控制器就是一個java類,其中的每個public/static方法都是一個action。一個action方法就是一個java入口點,當接到一個http請求時,就會調用這個action。action方法從http中提取數據,讀取或更新model對象,并向http請求者發送一個封裝好的response結果。所以controller更像view和model之間的一座橋梁。
app/models
model是一系列完全面向對象語言特征的java類,它包含了數據結構和數據操作。無論何時,model對象都需要存儲到持久化存儲設備里。一般情況下,它們還包含一些jpa注釋和sql語句。
app/views
view為play提供的高效模板,控制器從model層獲取一些感興趣的數據應用到模板,并通過這個模板把數據裝飾的特別漂亮。這個包有HTML、JSON,或其它特別用于動態生成model展現的模板文件組成。
conf
這個文件夾中放置了play的配置文件,其中application.conf是play框架的核心配置文件,比如配置數據庫,應用程序端口號等基礎性的應用程序配置都在這里面。
routes是http請求和該請求調用的應用程序方法之間的映射。
==========================================================================
conf/routes
文件中的'#'為注釋。
routes文件列出了所有應用程序所需要的路由。
該配置文件的左欄為HTTP方法+URL路徑(這種組合就叫作一個路由),右欄為對應的java調用。
如?GET? ? ?/? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Application.index??
GET為http方法,而'/'則表示根目錄localhost:9000,所以上面紅色代碼的意思為訪問根目錄時(程序運行后的第一個頁面)調用Application.java中的index方法
app/controllers/Application.java
index調用了一個render()方法,而此時的render()方法則是返回了與java方法index同名的index.html文件,也就是運行程序后在網頁中輸入localhost:9000會根據ulr調用index方法進而顯示index.html
如何運行項目呢?看圖
右鍵點擊eclipse中的.launch文件,Run As 選擇第一個 運行
運行成功控制欄中會顯示 Server is up and running
然后進入瀏覽器輸入lcalhost:9000?則會顯示下面頁面
是因為我們的index.html頁面還沒有寫任何內容
app/view/Application/index.html
#{welcome /}就是我們上一個圖片顯示的頁面,如果刪掉則運行后的頁面會變成空白。
而#{extends 'main.html' /}表示index頁面繼承自main.html
可以看到main.html里定義了一些共通的元素,如所用的css和js庫等。
通過繼承的方式,可以使得模板的復用性大大增強。
#{doLayout /} 指示index.html的內容是插入此處的。
接下來就編輯index.html
我們把#{welcome /}刪除掉了,寫了一個?form,其中@{}的作用是自動生成可以調用Application.sayHello? action的URL
在routes中可以表示為?GET /Application/sayHello? ? ? ? ?Application.sayHello
運行程序后我們會調用Application.sayHello,但是我們沒有sayHello方法,所以去Application.java加上這個方法
在form中我們通過submit提交自己的姓名,調用action,找到sayHello方法通過render將我們的名字上傳到http,但是上傳到上面之后卻沒有頁面去顯示這個數據,所以我們需要寫一個同名sayHello.html來顯示信息。
app/views/Application/sayHello.html
通過${}將http中的信息取出,myName?:'Null'意思為先判斷myName是否存在,如果不存在就顯示Null(當然也可以寫其他的),如果存在就顯示取出的myName。
測試一下?輸入名字lucy
? ? ? ? ? ? ? ?
不輸入任何東西
可以看到,現在頁面的URL為localhost:9000/application/sayhello?myName=lucy
我們也可以在routes中進行優化
那么頁面URL會顯示為
添加一些基本校驗,編輯Application.java
@Required是校驗myName是否存在,如果不存在輸出Please?input?your?name.?而這些錯誤信息都是存放在play的flash?scope。對了,不要忘記import play.data.validation.*; (我忘記截上了)
?然后重定向到index.html頁面上,所以重新編輯index.html頁面??
如果錯誤信息存在就從flash?scope中取出顯示到頁面上。
對的,就是這樣。
總結
以上是生活随笔為你收集整理的初学Play Framework(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新建虚拟机向导
- 下一篇: 存储ic载板_ic载板的定义