Play2.0 for scala
* 如果在Application里的Action用了TODO ,在访问时会返回“503,还没实现”的HTTP回复
* Form表单的提交,是根据处理提交的方法,在Routes文件里对应的Post/Get方式,来确定提交的方式。
* Evolutions ,与DB脚本有关。
* Anorm包里的类是用来做Sql处理的。
& Actions,Controllers和Results
Action:用来接收请求并进行处理。是一个(play.api.mvc.Request => play.api.mvc.Result)函数。处理Request并返回给客户端一个生成的结果。
构建一个Action:play.api.mvc.Action伴生对象提供很多帮助类来构建一个Action值。
- 最简单的就是带一个返回Result的表达式块作为参数。
Action{ Ok("Hello world") }
- 带一个Request => Result的函数来构建:
Action{ request =>
Ok("Got request [" + request + "]")
}
- 会经常把request参数标记为implicit(隐式)的,这样可以隐式地被其他需要它的API隐式调用。
Action{ implicit request =>
Ok("Got request [" + request + "]")
}
- 最后一种就是指定一个内容解析(BodyParser)的参数:
Action(parse.json){ implicit request =>
Ok("Got request [" + request + "]")
}
& Controllers 是Action生成器
它就只是一个Action的生成器。是单例的对象。最简单的使用就是继承自Controller对象就行了。
& 简单的结果(result)
到现在为止,我们只是关心简单结果:一个有状态码的HTTP结果,一个返回给web客户端的HTTP header和body的集合。这些全都定义在play.api.mvc.SimpleResult里。
def index = Action { SimpleResult( header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain")), body = Enumerator("Hello world!") ) }
当然,也有一些帮助类,比如Ok。有如下一些结果:
val ok = Ok("Hello world!")
val notFound = NotFound
val pageNotFound = NotFound(<h1>Page not found</h1>)
val badRequest = BadRequest(views.html.form(formWithErrors))
val oops = InternalServerError("Oops")
val anyStatus = Status(488)("Strange response type")
都可以在play.api.mvc.Results特质及伴生对象里找到。
$ 重定向也是一种简单的结果
Redirects也是一种简单结果,但不带response body 。
$ TODO :现在先不实现,等会实现。
浙公网安备 33010602011771号