play+acca+scala

一种全新的开发技术架构Play + Scala:教程: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery & Heroku,大概步骤:1.下载安装Play2 RC22.创建一个应用: play new foobar,提示中选择Scala3.在新创建的目录foobar中生成IDE配置文件,如使用IntelliJ,play idea;如是eclipse: play eclipsify4.启动Play服务器:play run可在浏览器键入http://localhost:90005. 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.scalapackage 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.Driverdb.default.url="jdbc:h2:mem:play"7.创建一个应用控制器用来转换Http请求到Bar对象,然后保存到数据库,app/controllers/Application.scala:package controllers import play.api.data.Formimport 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.addBar9.编辑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")) } }在浏览器键入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/listBars11.在app/assets/javascripts/index.coffee创建一个CoffeeScript 文件使用jQuery抓取JSON包,遍历Bar对象集合,逐个当前页面显示:$ -> $.get "/listBars", (data) -> $.each data, (index, item) -> $("#bars").append "
  • Bar " + item.name + ""12.修改app/views/index.scala.html,使用自动编译的javascript源码:
      在浏览器键入 http://localhost:9000 。以上开发完成,可以使用Heroku部署到云中。见原文。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值