您的位置:首页 > 其它

Play framework主要概念MVC应用模型

2017-07-23 12:27 399 查看
Play应用程序遵循应用于Web体系结构的MVC体系结构模式。此模式将应用程序分割成单独的层:表示层和模型层。表示层进一步拆分为视图和控制器层。该模型是应用程序运行的信息的特定领域表示。域逻辑为原始数据添加“意义”,大多数应用程序使用持久性存储机制(如数据库)来存储数据。MVC并没有特别提到数据访问层,因为它被理解为模型的底层或封装。视图将模型呈现为适合交互的形式,典型的用户界面。对于不同的目的,单个模型可以存在多个视图。在Web应用程序中,视图通常以“Web格式”呈现,如HTML、XML或JSON。然而,有些情况下视图可以用二进制形式表示,例如动态呈现的图表。控制器响应事件(通常是用户操作)并处理它们,还可以调用模型上的更改。在Web应用程序中,事件通常是HTTP请求:控制器侦听HTTP请求,从“事件”中提取相关数据,如查询字符串参数、请求标题……并将更改应用于基础模型对象。在Play应用这三层是在应用程序目录中定义的,在一个单独的java包。

app/controllers

控制器是一个java类的每个公共静态方法是一种行动。一个动作是一个java的入口点调用时,一个HTTP请求接收。从控制器类是java代码没有真正面向对象:它的主要程序代码。action方法从HTTP请求中提取相关数据,读取或更新模型对象,并将结果封装到HTTP响应中。

app/models

域模型对象层是一套java类使用的所有面向对象的特征可从java语言。它包含应用程序运行的数据结构和操作。当模型中的对象需要被保存到持久性存储,它们可能含有一些胶伪像JPA注释或SQL语句。

app/views

大多数应用程序视图是使用一个有效的模板系统生成的。控制器从模型层获取一些有趣的数据,然后应用模板来装饰这些对象。此包包含HTML、XML、JSON或其他模板文件,其中有用于动态生成模型表示的特殊指令。请求生命周期Play框架完全是无状态的,只有面向请求/响应的框架。所有HTTP请求都遵循相同的路径:1.框架接收HTTP请求。2.路由器组件试图找到能够接受此请求的最具体路由。然后调用相应的动作方法。3.应用程序代码被执行。4.如果需要生成一个复杂的视图,则呈现一个模板文件。5.操作方法(HTTP响应代码,内容)的结果随后被写成HTTP响应。标准应用程序布局Play应用程序的布局标准化,使事情尽可能简单。app目录这个目录包含所有可执行构件:java源代码和视图模板。我的.class在哪里?不要找编译java类。该框架在运行时编译的java源代码,只保留编译的类在一个字节缓存tmp目录下。在Play中应用的主要执行的文件是.java源文件,而不是编译后的类。应用程序目录中有三个标准包,每一层都有一个MVC架构模式。当然你可以添加你自己的包,比如一个utils包。此外,视图包进一步组织成子包:tags宿主应用程序标记,例如可重用的模板块。每个控制器的一个视图文件夹——通过与每个控制器相关的约定模板存储在它们自己的子包中。public目录存储在公共目录中的资源是静态资产,由Web服务器直接提供。这个目录被分成三个标准的子目录,图片、CSS样式表、JavaScript文件。您应该尝试组织这样的静态资产,以使所有Play应用程序保持一致。默认情况下,/public目录被映射到/public URL路径,但您可以轻松地更改该项,甚至可以为静态资产使用多个目录。conf目录conf目录包含了应用程序的所有配置文件;有两个必需的配置文件:
application.conf
,应用程序的标准配置文件,它包含应用程序的标准参数配置;
routes路由配置文件;
如果需要添加一些特定于应用程序的配置选项,对application.conf文件中添加更多的选择,这是个好主意,此文件中的配置选项是以编程方式读取的。
Play.configuration.get("propertyName"),当你创建一个新的应用程序,Play新命令从目录
$PLAY_HOME/resources/application-skel/conf
中复制一个默认配置文件,并带有一些注释出来的选项来启动。
如果任何库都需要特定的配置文件,尝试放到conf目录下:这个目录包括在java类路径。在文件的开始处,你可以添加额外的配置文件,在application.conf指定一个文件名的Play配置,使用@include作为配置选项的值,
例如,如果你定义额外的MIME类型在conf/ mime-types.conf
# Web fontsmimetype.eot = application/vnd.ms-fontobjectmimetype.otf = application/octet-streammimetype.ttf = application/octet-streammimetype.woff = application/x-font-woff
你可以将他们加入下面一行application.conf:
@include.mime = mime-types.conf
lib目录
这个目录包含所有应用程序需要的标准的java库。他们是自动添加到java类路径。
开发声明周期
在使用Play时没有打包编译部署的阶段,然而Play实现了两个模式,在开发阶段的开发模式dev,在部署阶段的部署模式prod
关于dev/prod模式
你运行你的应用程序既可以在dev模式也可以在prod模式,你可以使用application.mode configuration配置触发模型,当运行在开发模式时,Play将检查文件的变化,并将处理热部署,如果必要的话。
生产方式是充分优化的生产:java源和模板只编译一次,缓存的多用途。
java源代码编译,在运行时加载。当应用程序运行时如果java文件改变了,源代码将会重新编译并在JVM中热交换;如果出现编译错误,则在浏览器中显示确切的问题(仅在开发模式下)。
连接一个java调试器debugger
当你运行在开发模式的应用,你可以连接一个java调试器端口8000。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: