Play应用程序使用MVC架构模式来作为Web开发的基础架构。
MVC架构模式把应用程序分成三层:表现层,视图层,模型层
下图是play framework在MVC层次上对于http请求的处理流程:
请求生命周期:
Play framework是
无状态的并且是面向request、response的。所有的请求都遵从下述的处理流程。
- framework接收到一个http请求
- Router路由组件根据conf/routes的配置,找到请求对应的控制层方法并调用它
- 控制层方法被执行
- 如果需要生成一个复杂的视图,那么对相应的模板文件做render渲染操作
- 执行结果(http响应码和内容)输出到http response中
标准应用程序目录:
为了使事情变得更加简单,使用COC约定优于配置的思想,对应用程序目录进行了如下的标准化约定:
app目录:存放所有可执行的组件:java源代码、视图模板文件。
app目录下有controllers,models,views3个标准目录,分别对应MVC模式中的一层。同时也可以自己增加一些packages,如utils、jobs等
在使用play framework时,
不要去寻找编译好的java class文件。框架在运行时编译java源代码并且把编译好的class文件在临时目录中以字节码缓存的形式保存。
在play框架中主要的可执行组件就是java源文件而不是编译好的class文件。
views目录进一步被组织层:tags(存放应用程序标签,如存放可重用的模板片段),
每一个views文件夹对应一个Controller(根据约定,每个控制器关联的模板文件都存储在自己对应的目录中)。
public目录:存放静态的资源文件,并且直接通过play web服务器对外提供服务。里面包含3个标准子目录:images,javascripts,stylesheets,分别用来放图片,js脚本,css。默认情况下,/public目录和/public URL对应。当然也很容易通过如下配置改变这一点,同时也可以有多个目录同时提供静态资源。
GET /public/ staticDir:public
conf目录:存放所有应用程序的配置文件。其中最主要的2个是
application.conf(应用程序的主配置文件,包含很多标准的配置选项。你也可以在里面增加自定义的应用程序参数,然后在程序中通过Play.configuration.getProperty("param1.test")来取值)和
routes(路由定义文件)。
如果有lib包或者程序文件需要配置文件,那么也可以放置在这里。这个conf目录是被包含在classpath里面的。
lib目录:包含程序需要的所有jar包,也会被自动包含在classpath中
开发生命周期:
使用play框架是没有编译、打包、发布等阶段。Play框架包含有2种mode:
DEV mode使用在程序开发阶段,PROD mode使用在程序发布后。
DEV/PROD mode的切换通过修改conf目录下application.conf 文件中application.mode键的值来实现。
DEV mode的时候,play框架会自动检测文件变更并在需要的时候reload进来。Java代码在运行时被编译和加载,如果在程序运行时修改了java代码,那么这些代码会被自动重新编译并热交换到JVM中。在DEV模式下,如果一个编译错误发生,那边出错的内容和原因都会被现实在浏览器上。在DEV模式下,JPDA调试环境也会默认开始,默认端口8000。
PROD mode是为产品环境优化的模式,
java源代码、模板都只被编译一次并缓存起来为后面的所有用户提供服务。
http://www.playframework.org/documentation/1.0/main
- 大小: 37.1 KB
- 大小: 111 KB
分享到:
相关推荐
在“Playframework框架学习之路 1”中,我们可能要探讨这个框架的基础概念、安装过程以及如何创建一个简单的应用。下面将详细介绍Play Framework的关键知识点。 1. **快速开发**: Play Framework以其快速开发能力而...
2. **请求生命周期**:Play框架中的每个HTTP请求都会经历一系列步骤,包括路由、参数绑定、执行动作、返回结果等。了解这个生命周期有助于优化性能和处理异常。 3. **HTTP路由**:`routes`文件是路由配置的核心,...
依赖注入则是Play框架中的一个关键特性,它允许框架管理组件的生命周期,并能够使得组件更容易进行测试。 除此之外,本书还涉及了如何使用Play Framework与其他技术进行集成,如数据库、缓存和消息队列等。这些集成...
5. **依赖注入**:Play 内置了Guice作为默认的依赖注入容器,帮助开发者管理对象的生命周期和依赖关系,促进代码的解耦和可测试性。 6. **热重载**:在开发过程中,Play 支持代码的热重载,无需重启服务器,修改后...
在源码中,可以探索`play.api.Plugin`接口及其实现,理解插件的加载和生命周期管理。 6. **测试支持**:Play提供了强大的测试工具,如`play.test.WithApplication`和`play.api.test.Helpers`,帮助开发者进行单元...
* 请求生命周期:Java PLAY框架的请求生命周期包括请求接收、路由分配、控制器处理、视图渲染等几个阶段。在这个过程中,框架会将请求路由到对应的控制器,并由控制器处理请求并将结果返回给视图。 请求生命周期 ...
9. **依赖注入**:Play框架内置了Guice作为默认的依赖注入框架,帮助管理对象的生命周期和依赖关系,促进松耦合和可测试性。 10. **社区支持**:Play Framework拥有活跃的社区,提供了丰富的插件和第三方库,以及...
6. **生命周期管理**:考虑到`Play Framework`的生命周期管理,`PlayJava8Future`可能提供了确保`CompletableFuture`在Action结束后正确清理的方法。 这个项目的源代码(在`PlayJava8Future-master`文件中)包含了...
请求生命周期 - 8 - 标准应用程序布局layout - 9 - app目录 - 9 - public目录 - 10 - conf目录 - 10 - lib目录 - 11 - 开发生命周期 - 11 - 连接到java调试器 - 12 - 类增强Enhancement - 13 - 02.HTTP路由 - 13 - ...
Play Framework 2.x内置了Guice作为其默认的DI容器,帮助开发者管理对象的生命周期和依赖关系。DI使得代码更加松耦合,更易于测试和维护。在示例项目中,你将学习如何使用注解声明依赖,以及如何通过`@Inject`注入所...
在实际开发中,还可以考虑使用依赖注入框架(如Guice)来管理过滤器实例,以确保其生命周期正确。 总的来说,理解Play Framework的Java过滤器机制并将其与Scala API相结合,可以帮助Java开发者充分利用Play ...
Play Framework 是一个开源的Web应用框架,主要使用Java和Scala语言开发,基于MVC(Model-View-Controller)设计模式。这个框架强调简洁、反应式和模块化开发,旨在提高开发者的生产力,使得构建高性能、易测试且可...
- **生命周期管理**:Dagger 2可以管理对象的生命周期,确保在适当的时候创建和销毁对象,这对于Android应用特别重要,可以避免内存泄漏。 2. **Play Framework**: - **快速开发**:Play Framework支持TDD(测试...
1. **Activity生命周期**:详细介绍Activity从创建到销毁的整个过程中的关键方法及其调用时机。 2. **UI设计与布局**:教授如何使用XML布局文件来设计用户界面,包括常用的LinearLayout、RelativeLayout等布局方式。...
Play Framework是一个轻量级的Java开发框架,设计用于简化Web应用程序的开发流程,它强调开发效率和可伸缩性。以下是对Play Framework核心特性的详细解释: 1. **动态开发周期**:Play Framework通过自动编译和实时...
它可能包含了一些特定的适配器、拦截器或过滤器,以确保CXF能够与Play的路由和生命周期机制协同工作。而“有关使用它的详细教程”表明,这个压缩包可能附带了教程文档或示例代码,帮助开发者理解和应用这个模块。 ...
2. **驱动程序生命周期**:从加载、初始化、运行到卸载的全过程。 3. **安全编程**:驱动程序运行在高权限级别,错误可能导致系统崩溃,因此安全编程至关重要。 4. **调试技术**:使用WinDbg等工具进行驱动调试,...
Activity和Fragment都有明确的生命周期,开发者需要理解各个状态及其对应的回调方法,以确保应用在不同场景下正常运行。 **IntentFilter和启动模式** IntentFilter允许其他应用启动你的Activity或Service,而启动...
- 驱动加载与卸载:编写初始化和退出函数,管理驱动的生命周期。 - 设备控制:处理来自应用程序的I/O请求,实现读写操作。 - 中断处理:响应硬件设备产生的中断,执行相应的回调函数。 4. **Windows驱动开发** ...