你可以使用 play framework 做5件很爽的事情
阿新 • • 發佈:2019-02-19
1.繫結HTTP引數到JAVA方法裡的引數。
使用PLAY可以很簡單的從JAVA程式碼中檢索HTTP引數。只要把方法引數申明成和HTTP引數相同既可。
比如,這個request:
Http程式碼
只要把date,page宣告成JAVA方法的引數,你就可以檢索它們:
Java程式碼
PLAY將使用該方法的引數的靜態型別,來把HTTP值翻譯成JAVA物件。
智慧繫結對任何的類都有效。
Java程式碼
一個簡單的控制器,比如向Person新增一個例項可能會像這樣:
Java程式碼
HTML表單名稱定義的欄位:
Html程式碼
2.重定向到一個action呼叫相應的Java方法。
Play框架的forward並不等同Servlet中的forward,它有自己的forward,並且重定向到另一個ACTION非常的簡單。只需要呼叫相應
的JAVA方法,PLAY框架就會生成正確的HTTP “Redirect” response。
Java程式碼
注意:在 edit action 結束時,我們如何重定向到 show action。
在任何模板中,你可以使用類似這樣的方法來生成連線。
Html程式碼
3.當傳遞JAVA物件到模板時,你不需要重複去做類似以下的事情。
在許多框架中,為了傳遞JAVA物件到模板中,你需要寫如下的程式碼:
Java程式碼
但在PLAY框架中,你只需要這樣寫就搞定了:
Java程式碼
在模板中JAVA本地名字中檢索物件,這樣可以少寫不少程式碼。
4. 更高效的JPA
在PLAY框架中使用JPA是非常簡單的,無需要任何配置,當代碼載入時,PLAY框架會使用HIBERNATE自動開啟JPA Entity Manager並且神奇的使它同步。
此外,如果你使用play.db.jpa.Model超類,將有助於使你的程式碼更漂亮。如下:
Java程式碼
5. 簡單的檔案上傳管理
檔案上傳管理在PLAY框架中非常簡單。
下面這個HTML form:
Html程式碼
對應的JAVA方法:
Java程式碼
使用PLAY可以很簡單的從JAVA程式碼中檢索HTTP引數。只要把方法引數申明成和HTTP引數相同既可。
比如,這個request:
Http程式碼
- /articles/archive?date=08/01/08&page=2
只要把date,page宣告成JAVA方法的引數,你就可以檢索它們:
Java程式碼
- publicstaticvoid archive(Date date, Integer page) {
-
List<Article> articles = Articles.fromArchive(date, page);
- render(articles);
- }
PLAY將使用該方法的引數的靜態型別,來把HTTP值翻譯成JAVA物件。
智慧繫結對任何的類都有效。
Java程式碼
- publicclass Person {
- public String name;
- public Integer age;
- }
一個簡單的控制器,比如向Person新增一個例項可能會像這樣:
Java程式碼
- publicstaticvoid add(Person p) {
- p.save();
- }
HTML表單名稱定義的欄位:
Html程式碼
-
<form
- Name: <inputtype="text"name="p.name"/>
- Age: <inputtype="text"name="p.age"/>
- </form>
2.重定向到一個action呼叫相應的Java方法。
Play框架的forward並不等同Servlet中的forward,它有自己的forward,並且重定向到另一個ACTION非常的簡單。只需要呼叫相應
的JAVA方法,PLAY框架就會生成正確的HTTP “Redirect” response。
Java程式碼
- publicstaticvoid show(Long id) {
- Article article = Article.findById(id);
- render(article);
- }
- publicstaticvoid edit(Long id, String title) {
- Article article = Article.findById(id);
- article.title = title;
- article.save();
- show(id);
- }
注意:在 edit action 結束時,我們如何重定向到 show action。
在任何模板中,你可以使用類似這樣的方法來生成連線。
Html程式碼
- <ahref="@{Article.show(article.id)}">${article.title}</a>
- That will generate the following HTML:
- <ahref="/articles/15">My new article</a>
3.當傳遞JAVA物件到模板時,你不需要重複去做類似以下的事情。
在許多框架中,為了傳遞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框架中,你只需要這樣寫就搞定了:
Java程式碼
- Article article = Article.findById(id);
- User user = User.getConnected();
- render(article, user);
在模板中JAVA本地名字中檢索物件,這樣可以少寫不少程式碼。
4. 更高效的JPA
在PLAY框架中使用JPA是非常簡單的,無需要任何配置,當代碼載入時,PLAY框架會使用HIBERNATE自動開啟JPA Entity Manager並且神奇的使它同步。
此外,如果你使用play.db.jpa.Model超類,將有助於使你的程式碼更漂亮。如下:
Java程式碼
- publicvoid messages(int page) {
- User connectedUser = User.find("byEmail", connected());
- List<Message> messages = Message.find(
- "user = ? and read = false order by date desc",
- connectedUser
- ).from(page * 10).fetch(10);
- render(connectedUser, messages);
- }
5. 簡單的檔案上傳管理
檔案上傳管理在PLAY框架中非常簡單。
下面這個HTML form:
Html程式碼
- <formaction="@{Article.uploadPhoto()}"method="POST"enctype="multipart/form-data">
- <inputtype="text"name="title"/>
- <inputtype="file"id="photo"name="photo"/>
- <inputtype="submit"value="Send it..."/>
- </form>
對應的JAVA方法:
Java程式碼
- publicstaticvoid uploadPhoto(String title, File photo) {
- ...
- }