本文翻译自Play官方文档。原文见:http://www.playframework.org/documentation/1.1.1/main

Play Framework是一个Rails风格的Full-stack Java Web框架。

MVC模型

Play应用遵循Web架构使用的MVC架构模式。

它将应用分离到不同的层中:表现层(Presentation)和模型层(Model)。表现层进一步分为视图(View)和控制器(Controller)。

  • Model 是应用所处理信息的领域表述(Domain-Specific Representation)。绝大多数应用使用持久化机制如数据库存储数据。但是MVC并没有特别提到数据访问层,因为它属于下层,由模型封装。
  • View 将模型渲染成适合交互的表单,通常是用户界面。一个模型可有多个不同目的视图。Web应用中,View通常以HTML,XML或JSON形式呈现,也可能是二进制的Chart。
  • Controller处理事件(通常是用户动作),并对模型做相应改变。Web应用中,事件通常是HTTP请求:Controller监听HTTP请求,从其中提取数据,如查询字符串参数,请求头,然后改变下层模型对象。

Play将此三层分在app目录下的不同package中。

app/controllers

一个Controller就是一个Java 类,它的静态公共方法则是动作(Action)。动作是接收HTTP请求后的Java处理入口点。Controller类实际是面向过程的,非OO。Action从HTTP请求中提取数据,读或更新Model对象,然后返回一个包装成HTTP响应(HTTP Response)的结果。

app/models

Model是一组具有所有OO特性的Java类。包含数据结构和应用可使用的操作。(译注:即充血模型)。支持通过JPA持久化。

app/views

应用的视图由Play的模板系统生成。Controller从Model获取数据,然后使用模板呈现它。此package包含HTML,XML等模板文件,用作动态生成模型的表述(Representation)。

请求生命周期

Play是完全无状态的(stateless),且仅面向请求-应答(Request-Response)。所有请求遵循相同路径:

  1. 框架收到一个HTTP请求
  2. Router匹配请求和Controller、Action,执行动作方法。
  3. 应用代码执行
  4. 绘制模型,呈现视图
  5. 动作方法的结构作为HTTP响应返回。

应用程序布局

app目录

包含所有可执行的工件:Java源代码和视图模板。其下有三个标准package,每个代表MVC的一层。你也能添加你自己的包,如示例的utils包。

View pacakge可以在分子packages:

  • tags 存储应用的ta。如可重用的模板片段。
  • 一个Controller一个view目录,按惯例,每个Controller的相关模板存储在自己的子目录中。

.class文件在哪儿?

Play在运行时编译Java源代码,并将编译的类缓存在tmp\bytecode目录下。Play应用的可执行工件时.java源文件,不是已编译的.class(译注:包括jar文件)。

public目录

存储静态的、由Web服务器直接处理的资源。分为三个子目录:images,stylesheets和javascripts,分别放图片,css和js。

conf目录

包含应用的所有配置文件。两个必须文件为:

  • application.conf: 应用主配置文件,包含所有标准的配置选项。
  • routes:url路由规则定义文件。

此目录包含在Java ClassPath中。

lib目录

存放应用依赖的标准Java类库。此目录自动添加到Java classpath中。

开发生命周期

使用Play开发时没有编译,打包和部署这些阶段,代之两个不同环境:用于开发阶段的DEV模式和用户部署阶段的PROD模式。

Java源代码在运行时编译和加载。如果Java源文件在应用运行时发生改变,代码会重新编译并热加载(hot-swapped)到JVM中。模板文件也是如此。

关于DEV/PROD模式

通过application.mode配置属性切换DEV或PROD。DEV模式下,Play会检查并在必要时热加载。PROD模式为产品做了优化:Java源文件和模板仅编译一次。

调试

开发模式下通过JDPA连接到8000端口远程调试。(译注:原文此处很简略,实际上可远程调试,也可本地调试)

Play framework简介相关推荐

  1. ADO.NET Entity Framework 简介

    一直对EF都是一知半解的,没有系统的了解过EF有什么样的功能,有什么具体的好处.在接下来的文章中会详细介绍EF.以下是参考MSDN上的文章,翻译并加以自己的理解得出的. ADO.NET Entity  ...

  2. Entity Framework简介

    原文:Entity Framework简介 前言 很久很久之前就想来好好的学习一下EF,一直也是各种理由导致一直也没有好好的开始,现在下定决心了,不管怎样一定要把这先走一遍,并且把自己学到的相关EF的 ...

  3. Entity Framework 简介

    转贴:链接https://www.cnblogs.com/davidzhou/p/5348637.html 侵删,谢谢 第一篇:Entity Framework 简介 先从ORM说起吧,很多年前,由于 ...

  4. [转]Django REST framework 简介与中文教程

    Django REST framework 简介与中文教程 简介 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的. 在开发REST AP ...

  5. 进程 Android架构  Android Runtime  Libraries framework简介 Framework的范围 framework简介范围基础 Linux入门介绍

    目录 FrameWork框架之进程 Android简介 Android架构 Android Runtime Libraries framework简介

  6. Android Framework 简介

    Android Framework 简介 简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有详记,结果被很多公司技术人员鄙视了,为了减少自己的短板,重新复习了一遍C++.java.Androi ...

  7. ios的Framework简介

    Framework 简介 Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码和资源.framework 在概念上有点像 Window 下的库,但是比库更加强大,通过 fr ...

  8. Robot Framework简介及在汽车电子测试中的应用

    前言 汽车电子软件扮演着越来越重要的角色,为适应市场变化,车载软件和功能的开发需要快速迭代.敏捷开发.持续测试.CI/CT/CD实现和DevOps等成了汽车电子行业的高频词,也正在帮助OEM和零部件供 ...

  9. Metasploit Framework 简介与使用

    Metasploit Framework是一个编写,测试和使用exploit代码的完善环境.这个环境为渗透测试,shellcode编写和漏洞研究提供了一个可靠的平台,这个框架主要是由面向对象的Perl ...

  10. 第一篇:Entity Framework 简介

    先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架.要开发O ...

最新文章

  1. boost::lambda::is_instance_of_1用法的测试程序
  2. 微信小程序部分功能介绍和实现
  3. 三心二意,助你好运?
  4. springmvc中报错Request processing failed;
  5. Flume OOM 处理
  6. smart3d加载到谷歌_到底什么是Google Smart Lock?
  7. 何凯明:Single Image Haze Removal Using Dark Channel Prior[CVPR 2009]
  8. 3dmax全局材质灯光细分插件_【3D脚本插件】如何利用插件快速修改全局灯光材质细分...
  9. 计算机第一级开机密码设置,电脑如何设置开机密码 电脑开机密码设置方法
  10. Unity3D的3D音效的实现
  11. 设计模式-模板方法模式
  12. 海康摄像头SDK二次开发错误问题解决方案(一):2. 错误号64:NET_DVR_LOADPLAYERSDKFAILED 64 载入当前目录下 Player Sdk 出错
  13. chrome不显示数学公式
  14. 你所不知道的VR全景拍摄地拍步骤和细节
  15. 项目负责人的心得体会
  16. 浙江不老仙妻,教去皱
  17. 菲尔兹奖得主埃菲 · 杰曼诺夫全职加入南科大,任职讲席教授
  18. 被讨厌的勇气读书笔记
  19. 【前端三剑客】JavaScript 网页脚本语言(速览)
  20. 搜索行为和关键词分析(二):用户也会犯错(转)

热门文章

  1. 自强网站添加Ubuntu9.10更新源
  2. Iterator迭代器
  3. 学习jquery的一些笔记
  4. Python 技术篇-百度语音API鉴权认证获取Access Token实例演示
  5. PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
  6. Chrome 技巧篇-浏览器网页设置编码,解决网页乱码问题,最新版charset插件获取,UTF-8编码设置
  7. CTFshow 爆破 web25
  8. sdut-1153 C语言实验——求两个整数之中较大者
  9. [YTU]_2621(B 继承 圆到圆柱体)
  10. Simulink仿真 第二节 输入输出和子系统