教程: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku
一種全新的開發技術架構Play + Scala:教程: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku,大概步驟:
1.下載安裝Play2 RC2
2.建立一個應用: play new foobar,提示中選擇Scala
3.在新建立的目錄foobar中生成IDE配置檔案,如使用IntelliJ,play idea;如是eclipse: play eclipsify
4.啟動Play伺服器:
play run
可在瀏覽器鍵入http://localhost:9000
5. Play 2 with Scala並不提供預設的ORM,使用的Anorm,Anorm並不是一個類似Hibernate的ORM,不能自動建立資料表結構,建立一個檔案:conf/evolutions/default/1.sql,在裡面寫入SQL語句:
Anorm能夠使用Scala的"case class"作為值物件,作為一個單例例項進行持久和CRUD的介面物件,建立一個Scala的Bar case class,檔名為:app/models/Bar.scala
6.在conf/application.conf中配置一個記憶體h2資料庫資料來源:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
7.建立一個應用控制器用來轉換Http請求到Bar物件,然後儲存到資料庫,app/controllers/Application.scala:
8.建立一個對映POST請求路由到上面應用控制器,配置在"conf/routes":
9.編輯MVC的介面:app/views/index.scala.html
在瀏覽器鍵入http://localhost:9000,進行資料庫構建,測試表單,如果一切正常,當按表單提交,應該轉到index頁面。
10.在app/controllers/Application.scala建立一個JSON服務用來獲得所有bar例項集合:
將 “/listBars” 加入conf/routes:
GET /listBars controllers.Application.listBars
在瀏覽器測試http://localhost:9000/listBars
11.在app/assets/javascripts/index.coffee建立一個CoffeeScript 檔案使用jQuery抓取JSON包,遍歷Bar物件集合,逐個當前頁面顯示:
12.修改app/views/index.scala.html,使用自動編譯的javascript原始碼:
1.下載安裝Play2 RC2
2.建立一個應用: play new foobar,提示中選擇Scala
3.在新建立的目錄foobar中生成IDE配置檔案,如使用IntelliJ,play idea;如是eclipse: play eclipsify
4.啟動Play伺服器:
play run
可在瀏覽器鍵入http://localhost:9000
5. Play 2 with Scala並不提供預設的ORM,使用的Anorm,Anorm並不是一個類似Hibernate的ORM,不能自動建立資料表結構,建立一個檔案:conf/evolutions/default/1.sql,在裡面寫入SQL語句:
# --- First database schema # --- !Ups CREATE TABLE bar ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL ); # --- !Downs DROP TABLE IF EXISTS bar; <p class="indent"> |
Anorm能夠使用Scala的"case class"作為值物件,作為一個單例例項進行持久和CRUD的介面物件,建立一個Scala的Bar case class,檔名為:app/models/Bar.scala
package models import play.api.db._ import play.api.Play.current import anorm._ import anorm.SqlParser._ case class Bar(id: Pk[Long], name: String) object Bar { val simple = { get[Pk[Long]]("id") ~ get[String]("name") map { case id~name => Bar(id, name) } } def findAll(): Seq[Bar] = { //banq注: 直接進行資料庫操作,也夠醜陋的。 DB.withConnection { implicit connection => SQL("select * from bar").as(Bar.simple *) } } def create(bar: Bar): Unit = { DB.withConnection { implicit connection => SQL("insert into bar(name) values ({name})").on( 'name -> bar.name ).executeUpdate() } } } <p class="indent"> |
6.在conf/application.conf中配置一個記憶體h2資料庫資料來源:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
7.建立一個應用控制器用來轉換Http請求到Bar物件,然後儲存到資料庫,app/controllers/Application.scala:
package controllers import play.api.data.Form import play.api.data.Forms.{single, nonEmptyText} import play.api.mvc.{Action, Controller} import anorm.NotAssigned import models.Bar object Application extends Controller { //將http請求資料進行驗證轉為Form物件 val barForm = Form( single("name" -> nonEmptyText) ) def index = Action { Ok(views.html.index(barForm)) } //接受前臺新增Bar命令。 def addBar() = Action { implicit request => barForm.bindFromRequest.fold( errors => BadRequest, { case (name) => //呼叫Bar內部儲存方法 資料庫儲存。 Bar.create(Bar(NotAssigned, name)) Redirect(routes.Application.index()) } ) } } <p class="indent"> |
8.建立一個對映POST請求路由到上面應用控制器,配置在"conf/routes":
POST /addBar controllers.Application.addBar <p class="indent"> |
9.編輯MVC的介面:app/views/index.scala.html
@(form: play.api.data.Form[String]) @main("Welcome to Play 2.0") { @helper.form(action = routes.Application.addBar) { @helper.inputText(form("name")) <input type="submit"/> } } <p class="indent"> |
在瀏覽器鍵入http://localhost:9000,進行資料庫構建,測試表單,如果一切正常,當按表單提交,應該轉到index頁面。
10.在app/controllers/Application.scala建立一個JSON服務用來獲得所有bar例項集合:
import com.codahale.jerkson.Json def listBars() = Action { val bars = Bar.findAll() val json = Json.generate(bars) Ok(json).as("application/json") } <p class="indent"> |
將 “/listBars” 加入conf/routes:
GET /listBars controllers.Application.listBars
在瀏覽器測試http://localhost:9000/listBars
11.在app/assets/javascripts/index.coffee建立一個CoffeeScript 檔案使用jQuery抓取JSON包,遍歷Bar物件集合,逐個當前頁面顯示:
$ -> $.get "/listBars", (data) -> $.each data, (index, item) -> $("bars").append "<li>Bar " + item.name + "</li>" <p class="indent"> |
12.修改app/views/index.scala.html,使用自動編譯的javascript原始碼:
<script src="@routes.Assets.at("javascripts/index.js")" type="text/javascript"></script> <ul id="bars"></ul> 在瀏覽器鍵入 http://localhost:9000 。 以上開發完成,可以使用Heroku部署到雲中。見原文。 <p class="indent"> |
相關文章
- sbt建立play framework(play!)scala web專案FrameworkWeb
- [2]SpinalHDL教程——Scala簡單入門
- Play! Framework 系列(四):DI 模式比較Framework模式
- 【視訊】Entity Framework Core 2.* 入門教程Framework
- 開發工具-scala處理json格式利器-json4sJSON
- Heroku sqlSQL
- jQuery、ajax新增Json資料jQueryJSON
- jQuery入門(五)Ajax和jsonjQueryJSON
- jQuery EasyUI 教程jQueryUI
- Python JSON 教程PythonJSON
- 從 python 到 Scala 簡明教程Python
- 使用json和jquery級聯選擇JSONjQuery
- js jquery 列印物件;json 物件轉字串jQuery物件JSON字串
- CoffeeScript和Sass提高Web開發效率Web
- jQuery基礎教程jQuery
- 2、Entity Framework Core 3.1入門教程-建立資料庫和遷移Framework資料庫
- php傳遞json給jquery的問題PHPJSONjQuery
- 使用Jquery和JSON的州和城市列表jQueryJSON
- Heroku 的“得”與“失”
- 關於heroku的lookup api.heroku.com on 127.0.1.1:53問題解決API
- flink jar包執行報錯 java.lang.NullPointerException at org.json4s.Extraction$.decompose(Extraction.scala:2JARJavaNullExceptionJSON
- jQuery基礎2jQuery
- mormot2 jsonORMJSON
- jquery裡操作json相關的方法和例項jQueryJSON
- Java Web(2)-jQuery下JavaWebjQuery
- Java Web(2)-jQuery上JavaWebjQuery
- JSON Web Token 入門教程JSONWeb
- 小米Play有人臉識別功能嗎?小米Play人臉解鎖的設定方法教程
- 在 Laravel 中使用 TypeScript 、CoffeeScript 、pug 提高開發效率LaravelTypeScript
- Flask網站輕鬆部署到免費主機Heroku(2) 清除資料Flask網站
- Heroku 403 Forbidden Procfile 配置未生效ORB
- 將Laravel應用部署到HerokuLaravel
- Heroku 自動部署 GitHub 程式碼Github
- JSON & Vue -2024/11/2JSONVue
- mormot2 json操作ORMJSON
- framework7-vue ^2.x pushStateFrameworkVue
- Scala學習筆記(2)-基礎語法筆記
- "vue3-video-play". The package may have incorrect main/module/exports specified in its package.json.VueIDEPackageAIExportJSON
- 基於jquery+html開發的json格式校驗工具jQueryHTMLJSON