在Play2框架中,Actions、Controllers和Results是构建Web应用程序的核心概念。让我们深入探讨这些概念以及如何在实际应用中使用它们。 Action是处理HTTP请求的基本单元。它是一个接收HttpRequest并返回HttpResponse的函数。在Play2中,Action通常表现为`(play.api.mvc.Request => play.api.mvc.Result)`类型的函数。例如,以下是一个简单的Action,它接收请求并返回包含请求信息的200 OK响应: ```scala val echo = Action { request => Ok("Got request [" + request + "]") } ``` 创建Action最常用的方式是通过`Action`伴生对象提供的工厂方法。例如,创建一个简单的Action并返回"Hello world!": ```scala Action { Ok("Hello world!") } ``` 若需访问HttpRequest对象,可以将其声明为隐式参数,这样在Action闭包内就可以直接使用,无需显式传递: ```scala Action { implicit request => Ok("Got request [" + request + "]") } ``` Action还可以接受一个BodyParser参数,BodyParser用于解析HTTP请求体。如果不指定BodyParser,Play2会默认使用一个通用的BodyParser。 接下来是Controllers,它们是Action的生成器。Controller是一个伴生对象,负责创建Action实例。以下是一个简单的Controller示例: ```scala package controllers import play.api.mvc._ object Application extends Controller { def index = Action { Ok("It works!") } } ``` Controller中的Action生成函数可以接受参数,这些参数可以在Action闭包中使用。例如: ```scala def hello(name: String) = Action { Ok("Hello " + name) } ``` 在Play2中,创建HttpResponse通常使用`Result`类或其简化版本`SimpleResult`。`SimpleResult`包含了响应状态码、响应头和响应体。例如,以下代码创建了一个200 OK响应,响应体为"Hello world!": ```scala def index = Action { SimpleResult( header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain")), body = Enumerator("Hello world!") ) } ``` 不过,通常我们会使用更简洁的方法,如`Ok`、`NotFound`等工具函数来创建常见的HttpResponse: ```scala 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") ``` 这些工具函数简化了创建响应的过程,使得编写代码更加直观和便捷。 Play2的Actions、Controllers和Results提供了强大的功能,使得开发Web应用程序变得简单高效。Actions处理请求,Controllers组织和生成Action,而Results则封装了HTTP响应的构建,这三者共同构成了Play2框架的核心。通过理解并熟练运用这些概念,开发者能够构建出健壮、高性能的Web应用。
剩余37页未读,继续阅读
- zdflow2014-12-05完全不知所谓
- 走风2013-11-13Play2的资料现在貌似不多啊!Play还是没火起来
- kingwar_zh2016-11-21tks for sharing
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助