Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku

转载 2015年11月20日 17:53:37
大概步骤:

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;



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()
    }
  }
 
}



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())
      }
    )
  }
 
}



8.创建一个映射POST请求路由到上面应用控制器,配置在"conf/routes":

POST    /addBar                     controllers.Application.addBar



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"/>
    }
 
}


在浏览器键入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")
  }



将 “/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>"



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部署到云中。见原文。

教程: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku

一种全新的开发技术架构Play + Scala:教程: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku...
  • w_j_w2010
  • w_j_w2010
  • 2015年11月07日 11:31
  • 286

Play2 for Scala中文文档 – 10. 使用anorm操作数据库

(本文译者是爱国者) Anorm, simple SQL data access Play包含一个叫 Anorm 的数据库存取层。该数据库存取层使用原生SQL与数据库交互,并提供了一组API来解析...
  • w_j_w2010
  • w_j_w2010
  • 2015年11月07日 11:23
  • 1148

Play framework 2.0 -模板引擎-基于scala

Play framework 2.0 -模板引擎 #模板引擎   1.基于Scala的类型安全的模板引擎   Play2.0的有个新的基于Sc...
  • a502817870
  • a502817870
  • 2014年07月07日 15:20
  • 833

使用play框架来解析json字符串

因为最近在编写scala程序,就发现了使用play框架来方便的解析json数据。 一. 官网的解释是这样的: 1. 解析类库位于 play.api.libs.json._ 包。 2. 可以解析j...
  • liuhui_306
  • liuhui_306
  • 2016年06月28日 18:09
  • 3066

Play FrameWork项目中scala页面遍历list并操作index下标

直接看代码吧: @for((product,index)
  • Kiss_Fly
  • Kiss_Fly
  • 2016年01月13日 17:42
  • 1715

play Framework play json

概述     使用JSON的推荐方式是使用 Play 的基于类的JSON库,位于play.api.libs.json下.      该库构建于Jerkson之上,它是一个Scala包装者,...
  • u011930016
  • u011930016
  • 2015年10月26日 12:19
  • 1781

scala语言使用play2框架连接mysql数据库

1、首先在conf的application.conf中添加如下两行,即添加mysql驱动,其中root分别为用户名和密码,todolist是数据库名 2、打开最外层的build.sbt文件,在基础上...
  • springlustre
  • springlustre
  • 2015年07月17日 14:33
  • 1319

play_scala框架学习06 用户验证

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!   用户验证(User Authentification)复合的使用Play框...
  • u013575997
  • u013575997
  • 2016年07月01日 16:41
  • 727

Play FrameWork scala.html页面关于变量的一些运算操作

1.简单四则运算 @(jorder.getPopBill().getGoodsPrice() - jorder.getPopBill().getAbroadTransferPrice()) ...
  • Kiss_Fly
  • Kiss_Fly
  • 2016年01月05日 19:00
  • 1468

Play 2.0 AnORM 访问SQL数据库

- 配置JDBC连接池       Play 2.0 提供了一个内置插件来管理连接池。你可以配置多个数据库。     为了使用数据库插件,在conf/application文...
  • w_j_w2010
  • w_j_w2010
  • 2015年11月09日 18:03
  • 601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku
举报原因:
原因补充:

(最多只允许输入30个字)