天天看点

playframework学习笔记2 -- 基本的mvc

    从这里开始就真正进入框架的使用了。play是一个full stack的web框架,mvc当然是其中至关重要的一部分,今天简单的记录下我的学习体会。

  说到mvc,无非是model - view - controller,下面就分别就这几部分看看play中mvc的使用方法。

  1. Controller:

在play中,controller被称为action,与struts类似,而在使用上,也与struts中大同小异。按照网站上的解释,一个action是一个通过request生成response的方法。要想添加一个新的action的话,定义一个方法即可,只有一点需要注意的,那就是这个方法必须位于一个实现了controller的对象中。在例子程序中,action被放到了名为application的对象中。我们只需要在该对象中添加即可。

1 def index = Action {
2     Ok(views.html.home("Your new application is ready."))
3   }      

  2. view

在模板工程中,视图以html页面的形式放到了view目录下,由于还没有看到后面的内容,不确定是否能够支持别的视图。 虽然文件类型为html,但是与静态页面并不一样,而是服务端页面。在页面中,可以通过表达式动态显示服务端返回的内容,就像这样:

1 <body>
2         @content
3 </body>      

 与jsp中的el是不是有些类似呢?只是不知道是不是有像jstl这样的标签库。欢迎高手剧透。

 3. model

由于仅仅看了前面两章,没有看到专门有像spring mvc那样的模型视图对象来处理数据。还记得刚才模型一节的内容吗,"Your new application is ready"这个字符串被传递到哪去了呢?答案就是页面中。在页面中可以通过@来获取数据。粗略的猜测一下,model大概也是这样的方式交给页面进行展示的吧。还是那句话,高手请不吝赐教。

4. route

用户对于url路径的请求是怎么被转到相应的action进行处理的呢?答案就是route文件。可以大致看下route的内容:

GET     /                           controllers.Application.index
GET    /promise                    controllers.Application.promiseIndex          

结合网站的介绍可以知道,每一行对应一个请求mapping。大致格式是 http方法 + url pattern + 对应的action。这里仅有两个静态的pattern。事实上,这个映射远比这里写的要强大的多。通配符和参数都能够很好的支持。

1 GET   /clients/:id          controllers.Clients.show(id: Long)       

上图是网站上的例子,熟悉web开发的同学应该很快反应过来了,这不就是传说中的rest么?没错,通过这样的mapping,实现rest风格的web service变得异常简单。至于使用正则的url匹配模式这样的高级功能,就需要通过实践慢慢摸索了。

时间有限,这篇简单介绍play中的基本mvc的文章就到此结束了。欢迎批评斧正!

转载于:https://www.cnblogs.com/yaotc/archive/2012/11/26/2790034.html