Play Framework介绍:主要概念(转)
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)。所有请求遵循相同路径:
- 框架收到一个HTTP请求
- Router匹配请求和Controller、Action,执行动作方法。
- 应用代码执行
- 绘制模型,呈现视图
- 动作方法的结构作为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端口远程调试。(译注:原文此处很简略,实际上可远程调试,也可本地调试)
转载自: http://www.cnblogs.com/Chaos/archive/2011/04/16/2018315.html
Play Framework介绍:主要概念(转)的更多相关文章
- Docker介绍基本概念(一)
Docker介绍基本概念 1.什么是Docker? 说实话关于Docker是什么并太好说,下面我通过四点向你说明Docker到底是个什么东西. Docker是世界领先的软件容器平台. Docker使用 ...
- Entity Framework介绍
1.Entity Framework介绍 下图显示EF整体架构.现在我们来看看架构的各个组件: EDM(Entity Data Model): EDM由三个主要部分组成:概念模型,映射和存储模型.映射 ...
- 基于Vue的Quasar Framework 介绍 这个框架UI组件很全面
基于Vue的Quasar Framework 介绍 这个框架UI组件很全面 基于Vue的Quasar Framework 中文网http://www.quasarchs.com/ quasarfram ...
- faster-rcnn系列原理介绍及概念讲解
faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...
- 8天掌握EF的Code First开发之Entity Framework介绍
返回<8天掌握EF的Code First开发>总目录 本篇目录 Entity Framework概要 什么是ORM Entity Framework简史 Entity Framework具 ...
- 转载 8天掌握EF的Code First开发之Entity Framework介绍
转载原地址: http://www.cnblogs.com/farb/p/IntroductionToEF.html Entity Framework概要 Entity Framework是微软的O ...
- .NET Framework介绍
.NET Framework 是一个集成在 Windows 中的组件,它支持生成和运行下一代应用程序与 XML Web Services. .NET Framework 旨在实现下列目标: 提供一个一 ...
- 【Robot Framework 介绍】总纲
Robot Framework是一个由python构建的的开源的自动化测试框架,现在版本还在不停的更新中.由于它开源性,网上有大量的第三方接口和很多资料.下面提供两个比较官方的链接,有兴趣的同学可以直 ...
- 01 Django REST Framework 介绍
01-Django REST Framework的介绍 Django REST框架是一个用于构建Web API的强大而灵活的工具包. 您可能希望使用REST框架的一些原因: 1. Web可浏览API对 ...
随机推荐
- VS2008中开发智能设备程序的一些总结
原文链接:http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四个部分: 系统配置 这个部分用来配置系统中的相关参数,参数包括数据 ...
- Redis数据导入工具优化过程总结
Redis数据导入工具优化过程总结 背景 使用C++开发了一个Redis数据导入工具 从oracle中将所有表数据导入到redis中: 不是单纯的数据导入,每条oracle中的原有记录,需要经过业务逻 ...
- Scrum Meeting---Five(2015-10-29)
今日已完成任务和明日要做的任务 姓名 今日已完成任务 今日时间 明日计划完成任务 估计用时 董元财 Java Web工程创建,hibernate框架安装,关系映射文件生成 4h 用户注册登录 4h 胡 ...
- Python学习(10)元组
目录 Python 元组 访问元组 修改元组 删除元组 元组运算符 元组索引,截取 无关闭分隔符 元组内置函数 Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组 ...
- Python不同电脑之间传输文件实现类似scp功能不输密码
SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient. ...
- 关于Freelists和Freelist Groups的研究【转】
一. 什么是freelists 本文在于探讨Freelists和Freelist Groups的作用,存取机制,争用诊断和优化方法,同时通过理论和测试来推翻一些存在了很久的错误观点.本文的 ...
- PHP 安全相关 简单知识
概要: 1.php一些安全配置 (1)关闭php提示错误功能 (2)关闭一些“坏功能” (3)严格配置文件权限. 2.严格的数据验证,你的用户不全是“好”人 2.1为了确保程序的安全性,健壮性,数据验 ...
- maven各种插件在总结
http://blog.csdn.net/taiyangdao/article/category/6377863 好文章系列课程
- entity refenrece 在views中的运用
在一个content type中有一个field是entity reference, 那么这个字段的设置过程中会指定一个entity type和content type和一个具体内容的选择器, 然后到 ...
- Graph-tool简介 - wiki
graph-tool is a Python module for manipulation and statistical analysis of graphs[disambiguation nee ...