来玩Play框架01 简介
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
说到网络框架,Ruby的Ruby on Rail和Python的Django都相当轻巧好用,但Java下的框架,则要沉重很多。有人因此质疑Java语言本身是否符合网络时代的需求。Java大神们对这一问题嗤之以鼻。想要轻巧好用的框架?写一个给你就是了。Java程序员Guillaume Bort在JVM上创造了一个全新的框架Play framework。Play拥有ROR或Django那样的灵巧,又不失Java的稳定,更有JVM这一强大的运行平台。魔鬼身材,天使脸蛋。让我们来玩玩Play吧。

下载与安装
Play的安装相当简单。在Play官网下载,我下载的是2.2.1版本。该版本的API文档为2.2.1API。
把下载的.zip文件解压缩,并将解压缩后的文件夹放到某个位置。比如/home/vamei/Util。
unzip play-2.2..zip
mv play-2.2. /home/vamei/Util/
文件夹里重要的是可执行文件play。我一般是在/home/vamei/Util/下创建一个bin文件夹,并在该文件夹中创建play的软链接。
mkdir -p /home/vamei/Util/bin
cd /home/vamei/Util/bin
ln -s /home/vamei/Util/play-2.2./play .
最后,将新建的bin文件夹放入系统路径。
echo "export PATH=/home/vamei/Util/bin:$PATH" >> /home/vamei/.bashrc
source /home/vamei/.bashrc
在命令行输入play,将显示:
_
_ __ | | __ _ _ _
| '_ \| |/ _' | || |
| __/|_|\____|\__ /
|_| |__/ play 2.2. built with Scala 2.10. (running Java 1.7.0_51), http://www.playframework.com This is not a play application! Use `play new` to create a new Play application in the current directory,
or go to an existing application and launch the development console using `play`. You can also browse the complete documentation at http://www.playframework.com.
注:
上面是Ubuntu下的安装过程。Linux系统都类似。
在Mac OS下,选择合适的路径安装play,过程也相同。
对于Windows下的安装,没有探索。欢迎补充。
创建与运行
切换到/home/vamei,创建一个网络应用test,
play new test
跟随指示,输入项目的必要信息。应用名和编程语言,分别为test和Java。
将有一个新的文件夹/home/vamei/test出现在当前路径。它包含该项目的所有文件。
test
├── README
├── app
│ ├── controllers
│ │ └── Application.java
│ └── views
│ ├── index.scala.html
│ └── main.scala.html
├── build.sbt
├── conf
│ ├── application.conf
│ └── routes
├── project
│ ├── build.properties
│ └── plugins.sbt
├── public
│ ├── images
│ │ └── favicon.png
│ ├── javascripts
│ │ └── jquery-1.9..min.js
│ └── stylesheets
│ └── main.css
└── test
├── ApplicationTest.java
└── IntegrationTest.java
上面最重要的文件夹是app,里面包含了项目的MVC定义。Play采用MVC架构(model-view-control)。新建项目已经创建好了controllers和views,包含有控制器(controller)和视图(view)模板。如果有必要,可以在app下创建models文件夹,用来定义数据模型(model)。
application.conf包含了项目的各个设置参数。
routes记录了url请求和控制器的对应关系。当有http请求进入时,Play将根据该文件的设置,调用特定的控制器行动。
现在,切换到/home/vamei/test,并运行项目。输入命令:
play run
Play自己包含有一个网络服务器模块,所以不需要和apache衔接,就可以作为网络服务器,直接工作。
打开浏览器,访问localhost:9000,将看到运行的test应用。

这一页面是新建项目自带的页面。
解析
Play框架的主要功能是动态生成http响应。http协议按照“请求-响应”(request-response)的方式工作。http通信的相关介绍,可参考http协议。
Play是MVC架构,分步骤生成响应,而每一步由不同的模块负责。上面的一个简单页面,是如下过程产生的:

图中的黑色字体表明了这些功能在项目中所在的具体文件。
routes负责将url导向正确的行动(action)。action是生成http响应的核心。一个action会经过一系列的运算,产生一个响应。而控制器controller只是一个action的集合。在Java编程中,action是controller类的一个方法。action的响应可以传给某个视图,比如上面的index.scala.html,从而更好的控制显示效果。最后的结果,就是一个http响应,也就是我们所看到的页面。
通过个性化上述过程,我们可以设计出功能更丰富的网络应用。
持续运行
Play自带的服务器可以持续运行。将Play安装在目标服务器,比如云上后,在Play项目的根目录下,用:
play start
来持续运行服务器。此后你可以按Ctrl-D来返回命令行。此时的Play不依赖于Shell,即使退出服务器的登陆,Play还是会持续运行。
使用其它端口运行:
play "start -Dhttp.port=8080"
停止运行。切换到项目的根目录下,使用命令:
play stop
总结
play new
play run
动态生成响应
model-control-view
欢迎继续阅读“Java快速教程”系列文章
来玩Play框架01 简介的更多相关文章
- Django框架01 / http协议、web框架本质
Django框架01 / http协议.web框架本质 目录 Django框架01 / http协议.web框架本质 1.http协议 1.1 http协议简介 1.2 什么是http协议 1.3 H ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组
DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组 地址: DWZ富客户端框架:http://jui.org/#_blank DWZ简介及其使用:http://blog.sina.com.cn/s/ ...
- 从零开始写一个武侠冒险游戏-0-开发框架Codea简介
从零开始写一个武侠冒险游戏-0-开发框架Codea简介 作者:FreeBlues 修订记录 2016.06.21 初稿完成. 2016.08.03 增加对 XCode 项目文件的说明. 概述 本游戏全 ...
- Twitter的RPC框架Finagle简介
Twitter的RPC框架Finagle简介 http://www.infoq.com/cn/news/2014/05/twitter-finagle-intro
- Python 黑客 004 用Python构建一个SSH僵尸网络 01 简介
用Python构建一个SSH僵尸网络 01 简介 一. 构建一个SSH僵尸网络的流程图: Created with Raphaël 2.1.0手动操作,实现通过SSH连接目标服务器(手动)用 Pexp ...
- android hook 框架 libinject2 简介、编译、运行
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
- Java自动化测试框架-01 - TestNG之入门篇 - 大佬的鸡肋,菜鸟的盛宴(详细教程)
TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...
- Linux 时间同步 01 简介
Linux 时间同步 01 简介 目录 Linux 时间同步 01 简介 时间同步 公共NTP服务器地址及IP 系统时间相关文件 时间同步 大数据产生与处理系统是各种计算设备集群的,计算设备将统一.同 ...
随机推荐
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- MFC单文档程序添加HTML帮助支持
1.在App类 构造函数中添加 EnableHtmlHelp(); 2.在Frame类中,添加消息影射: ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFin ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 初识JavaScript
JavaScript ECMA-262: 变量,函数,对象,数据类型....唯独没有输入和输出. Javascript:包含 ECMA-262,核心 BOM 浏览器对象模型, DOM 文档对象模型 什 ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- Xamarin. Android实现下拉刷新功能
PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...
- Cowboy 开源 WebSocket 网络库
Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Pro ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- 在春意盎然的季节里初识GIT
Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征. ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...