业务逻辑是在域模型中层里进行管理,客户端无法直接调用业务逻辑代码,客户端是通过资源的URI来访问域对象。

客户端使用HTTP协议中提供的统一方法来访问这些特定资源,并隐式调用底层的业务逻辑。

在play框架中,控制器其实就是一个java类,位于controllers包中,继承了父类play.mvc.Controller

简单实例:
public class Clients extends Controller {
public static void show(Long id){
Client client = Client.findById(id);
render(client);
}
public static void delete(Long id){
Client client = Client.findById(id);
client.delete();
}
}

play将所有的模板文件都放在app/views目录下,所有页面都是在请求时解析的。

app/views目录说明:
Application:存放应用主controller程序的模板
errors:存放错误页面模板,例如404/500等
main.html:主页面模板
play框架的set指令用于设置页面的标题,这些指令都要进行关闭,最后一行打印欢迎信息
play框架使用render方法来处理参数的传递。比如我们在controller中读取一些数据,病将这些数据传递到view中进行显示。
render(hello),在模板中获取变量用${hello}

play框架自带很多的标签,但是可以自己创建一些,我们现在views目录下创建名为tags的子目录。

play框架默认使用jQuery发送Ajax请求。也提供了jsAction标签透明的从控制器得到一个定义的方法。

play有一个缓存的库,当需要在分布式的系统中使用时,用的是memcached.如果不配置memcached,play会使用独立的缓存,将数据存放在jvm的堆中。
当你把数据放进缓存里的时候,你不能期望数据永远保存在哪里,缓存很快,但是数据会失效,而且环迅通常只存在在内存里(如果没有持久化备份的话)。
所以使用缓存最好的办法是在你不需要它的时候清空它。
缓存API是由类play.cache.Cache提供的,这个类包含了一系列的方法,可以设定,替换,得到缓存中的值。

play框架的Scala模块
play包含了对Scala编程语言的支持,要启用Scala支持只需要在conf/application.conf文件中配置:
module.scala=${play.path}/modules/scala
接下来就可以在已有的应用中使用scala来编写代码,也可以是java和scala混合编码。
不建议在生产环境中完全使用scala来编写play应用。

Scala编写应用的步骤:
创建应用:
play new myApp –with scala
一旦使用这个命令创建应用后,controllers包中的Application.java就变成了Application.scala文件
Scala应用可以直接让某个方法返回值
def index = “

hello world”
处理Action的参数
def index(name:String) = hello {name}
还可以定义默认值
def index(name:String = “Guest”) = hello {name}
如果使用了默认值,那么一旦请求中不包含指定的参数,play会自动用默认值替代。

使用play发送邮件:
可以使用play.libs.Mail工具类发送邮件。
bc.Mail.send(“sender@abc.com”,”recipient@abc.com”,”Subject”,”Message”);

play不是一个需要添加到Servlet容器中的类库,而是一个可以独立运行你的应用的全栈式Java框架。