[b]Play应用程序[/b]使用MVC架构模式来作为Web开发的基础架构。
MVC架构模式把应用程序分成三层:表现层,视图层,模型层
下图是play framework在MVC层次上对于http请求的处理流程:
[img]http://dl.iteye.com/upload/attachment/0069/3160/ae086540-0aef-3470-8d86-36e8176f619c.png[/img]
[b]请求生命周期:[/b]
Play framework是[color=red]无状态的并且是面向request、response的。所有的请求都遵从下述的处理流程。[/color]
[list]
[*]framework接收到一个http请求
[*]Router路由组件根据conf/routes的配置,找到请求对应的控制层方法并调用它
[*]控制层方法被执行
[*]如果需要生成一个复杂的视图,那么对相应的模板文件做render渲染操作
[*]执行结果(http响应码和内容)输出到http response中
[/list]
[img]http://dl.iteye.com/upload/attachment/0069/3162/5e2f0f8a-38d2-36e3-952c-e8b36f2f780a.png[/img]
[b]标准应用程序目录:[/b]
为了使事情变得更加简单,使用COC约定优于配置的思想,对应用程序目录进行了如下的标准化约定:
[color=red]app目录:[/color][color=blue]存放所有可执行的组件[/color]:java源代码、视图模板文件。
app目录下有controllers,models,views3个标准目录,分别对应MVC模式中的一层。同时也可以自己增加一些packages,如utils、jobs等
在使用play framework时,[color=red]不要去寻找编译好的java class文件[/color]。框架在运行时编译java源代码并且把编译好的class文件在临时目录中以字节码缓存的形式保存。[color=red]在play框架中主要的可执行组件就是java源文件而不是编译好的class文件。[/color]
[color=red]views目录[/color]进一步被组织层:tags(存放应用程序标签,如存放可重用的模板片段),[color=red]每一个views文件夹对应一个Controller[/color](根据约定,每个控制器关联的模板文件都存储在自己对应的目录中)。
[color=red]public目录:[/color][color=blue]存放静态的资源文件,并且直接通过play web服务器对外提供服务[/color]。里面包含3个标准子目录:images,javascripts,stylesheets,分别用来放图片,js脚本,css。默认情况下,/public目录和/public URL对应。当然也很容易通过如下配置改变这一点,同时也可以有多个目录同时提供静态资源。
[color=red]conf目录:[/color]存放所有应用程序的配置文件。其中最主要的2个是[color=blue]application.conf[/color](应用程序的主配置文件,包含很多标准的配置选项。你也可以在里面增加自定义的应用程序参数,然后在程序中通过Play.configuration.getProperty("param1.test")来取值)和[color=blue]routes[/color](路由定义文件)。[color=red]如果有lib包或者程序文件需要配置文件,那么也可以放置在这里。这个conf目录是被包含在classpath里面的。[/color]
[color=red]lib目录:[/color]包含程序需要的所有jar包,也会被自动包含在classpath中
[b]开发生命周期:[/b]
使用play框架是没有编译、打包、发布等阶段。Play框架包含有2种mode:[color=red]DEV mode使用在程序开发阶段,PROD mode使用在程序发布后。[/color]
DEV/PROD mode的切换通过修改conf目录下application.conf 文件中application.mode键的值来实现。
[color=red]DEV mode的时候[/color],play框架会自动检测文件变更并在需要的时候reload进来。Java代码在运行时被编译和加载,如果在程序运行时修改了java代码,那么这些代码会被自动重新编译并热交换到JVM中。在DEV模式下,如果一个编译错误发生,那边出错的内容和原因都会被现实在浏览器上。在DEV模式下,JPDA调试环境也会默认开始,默认端口8000。
[color=red]PROD mode[/color]是为产品环境优化的模式,[color=blue]java源代码、模板都只被编译一次并缓存起来为后面的所有用户提供服务[/color]。
[url]http://www.playframework.org/documentation/1.0/main[/url]
MVC架构模式把应用程序分成三层:表现层,视图层,模型层
下图是play framework在MVC层次上对于http请求的处理流程:
[img]http://dl.iteye.com/upload/attachment/0069/3160/ae086540-0aef-3470-8d86-36e8176f619c.png[/img]
[b]请求生命周期:[/b]
Play framework是[color=red]无状态的并且是面向request、response的。所有的请求都遵从下述的处理流程。[/color]
[list]
[*]framework接收到一个http请求
[*]Router路由组件根据conf/routes的配置,找到请求对应的控制层方法并调用它
[*]控制层方法被执行
[*]如果需要生成一个复杂的视图,那么对相应的模板文件做render渲染操作
[*]执行结果(http响应码和内容)输出到http response中
[/list]
[img]http://dl.iteye.com/upload/attachment/0069/3162/5e2f0f8a-38d2-36e3-952c-e8b36f2f780a.png[/img]
[b]标准应用程序目录:[/b]
为了使事情变得更加简单,使用COC约定优于配置的思想,对应用程序目录进行了如下的标准化约定:
[color=red]app目录:[/color][color=blue]存放所有可执行的组件[/color]:java源代码、视图模板文件。
app目录下有controllers,models,views3个标准目录,分别对应MVC模式中的一层。同时也可以自己增加一些packages,如utils、jobs等
在使用play framework时,[color=red]不要去寻找编译好的java class文件[/color]。框架在运行时编译java源代码并且把编译好的class文件在临时目录中以字节码缓存的形式保存。[color=red]在play框架中主要的可执行组件就是java源文件而不是编译好的class文件。[/color]
[color=red]views目录[/color]进一步被组织层:tags(存放应用程序标签,如存放可重用的模板片段),[color=red]每一个views文件夹对应一个Controller[/color](根据约定,每个控制器关联的模板文件都存储在自己对应的目录中)。
[color=red]public目录:[/color][color=blue]存放静态的资源文件,并且直接通过play web服务器对外提供服务[/color]。里面包含3个标准子目录:images,javascripts,stylesheets,分别用来放图片,js脚本,css。默认情况下,/public目录和/public URL对应。当然也很容易通过如下配置改变这一点,同时也可以有多个目录同时提供静态资源。
GET /public/ staticDir:public
[color=red]conf目录:[/color]存放所有应用程序的配置文件。其中最主要的2个是[color=blue]application.conf[/color](应用程序的主配置文件,包含很多标准的配置选项。你也可以在里面增加自定义的应用程序参数,然后在程序中通过Play.configuration.getProperty("param1.test")来取值)和[color=blue]routes[/color](路由定义文件)。[color=red]如果有lib包或者程序文件需要配置文件,那么也可以放置在这里。这个conf目录是被包含在classpath里面的。[/color]
[color=red]lib目录:[/color]包含程序需要的所有jar包,也会被自动包含在classpath中
[b]开发生命周期:[/b]
使用play框架是没有编译、打包、发布等阶段。Play框架包含有2种mode:[color=red]DEV mode使用在程序开发阶段,PROD mode使用在程序发布后。[/color]
DEV/PROD mode的切换通过修改conf目录下application.conf 文件中application.mode键的值来实现。
[color=red]DEV mode的时候[/color],play框架会自动检测文件变更并在需要的时候reload进来。Java代码在运行时被编译和加载,如果在程序运行时修改了java代码,那么这些代码会被自动重新编译并热交换到JVM中。在DEV模式下,如果一个编译错误发生,那边出错的内容和原因都会被现实在浏览器上。在DEV模式下,JPDA调试环境也会默认开始,默认端口8000。
[color=red]PROD mode[/color]是为产品环境优化的模式,[color=blue]java源代码、模板都只被编译一次并缓存起来为后面的所有用户提供服务[/color]。
[url]http://www.playframework.org/documentation/1.0/main[/url]