* 如果在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值。
Action{ Ok("Hello world") }
Action{ request => Ok("Got request [" + request + "]") }
Action{ implicit request => Ok("Got request [" + request + "]") }
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 :现在先不实现,等会实现。