main - niubods/playframework-notes GitHub Wiki
下面列出的是Play中的主要概念。了解这些概念之后可以让你对Play有个大概的认识。但是这一章节并不涉及Play的工作机制,有些人可能要失望了。
每个人的学习习惯并不相同,有些人可能想要一个流程图,好明白这些概念之间是如何协同工作的,另一些人可能想直接看到示例程序的源码。
Play应用遵循MVC模式作为web架构。
这种模式将应用进行分层:表现层和模型层。表现层又进一步分为视图层和控制器层。
这三个层在play应用的app目录中,每一个都在单独的包中:
控制器是一个java类,每一个共有静态方法都是*动作*,动作是收到HTTP请求调用java代码的入口。控制器类的java代码并没有真正的面向对象,它们主要是一些过程代码。动作方法从一个HTTP请求中提取相关数据,读取或更新模型对象,并发回一个封装成HTTP相应的结果。
领域对象模型层是一组使用了java语言提供的所有面向对象特性的java类。它包含数据结构和可供调用的业务方法。当模型对象要被保存到持久储存器的时候,它们可以包含一些胶水产物,如JPA注解或SQL语句。
应用中大多数视图都是由Play提供的一个高效模板系统生成。控制器从模型层获取感兴趣的数据,然后使用一个模板来装点这些对象。这个包里有HTML,XML,JSON或其他含有特殊指令(标签)的文件,用来动态生成模型的表现形式。
- 框架接受一条HTTP请求。
- 路由组件尝试找到一个和这个请求最匹配的路由规则,然后调用相应的动作方法。
- 执行应用程序代码。
- 如果需要产生一个比较复杂的视图,就去渲染一个模板文件。
- 动作方法的结果作为HTTP响应写入。
app目录包含所有可执行构件,包括java源码和视图模板。app目录下有三个标准包,分别对应MVC的三个层。当然app目录下也可以包含您自己的包,如utils。
此外,view包还进一步组织成子包:
-
tags
放置应用程序标签,例如可重复使用的模板。 - 每个
view
目录下的文件夹对应一个控制器——按照约定每个控制器相关的模板放在自己的子包下。
此目录被分成三个标准的子目录:分别放置图片、CSS和JavaScript。你应该像这样组织你的静态资源,以保证在所有play应用中保持一致性。
config
目录保存应用的所有配置文件。
必须的配置文件有两个:
-
application.conf
,应用程序的主配置文件,它包含了标准的配置参数。 -
routs
,路由定义文件。
这个目录包含你的应用所需的所有java库。它们会自动加入到classpath中。
后面的章节基本都是完全翻译,一方面自己并没有完全掌握,只记录自以为是重点的地方怕有遗漏,而且虽然翻译很累,整理更累,懒得动脑筋了。