前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >来玩Play框架01 简介

来玩Play框架01 简介

作者头像
Vamei
发布于 2018-01-18 08:23:35
发布于 2018-01-18 08:23:35
1.5K00
代码可运行
举报
文章被收录于专栏:Vamei实验室Vamei实验室
运行总次数:0
代码可运行

说到网络框架,Ruby的Ruby on Rail和PythonDjango都相当轻巧好用,但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。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unzip play-2.2.1.zip
mv play-2.2.1 /home/vamei/Util/

文件夹里重要的是可执行文件play。我一般是在/home/vamei/Util/下创建一个bin文件夹,并在该文件夹中创建play的软链接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /home/vamei/Util/bin
cd /home/vamei/Util/bin
ln -s /home/vamei/Util/play-2.2.1/play .

最后,将新建的bin文件夹放入系统路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "export PATH=/home/vamei/Util/bin:$PATH" >> /home/vamei/.bashrc
source /home/vamei/.bashrc

在命令行输入play,将显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       _
 _ __ | | __ _ _  _
| '_ \| |/ _' | || |
|  __/|_|\____|\__ /
|_|            |__/

play 2.2.1 built with Scala 2.10.2 (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,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
play new test

跟随指示,输入项目的必要信息。应用名和编程语言,分别为test和Java。

将有一个新的文件夹/home/vamei/test出现在当前路径。它包含该项目的所有文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.0.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,并运行项目。输入命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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项目的根目录下,用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
play start

来持续运行服务器。此后你可以按Ctrl-D来返回命令行。此时的Play不依赖于Shell,即使退出服务器的登陆,Play还是会持续运行。

使用其它端口运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
play "start -Dhttp.port=8080"

停止运行。切换到项目的根目录下,使用命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
play stop

总结

play new

play run

动态生成响应

model-control-view

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-04-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python3简单实现多任务(多进程篇)第一种:进程池快速创建(适合创建大量进程,简单,推荐!)第二种实现方式(Process创建进程,需要手动管理)第三种实现方式(windows无法使用,只能在类U
python多进程实现多任务 优点:稳定性高;提升程序执行效率 第一种:进程池快速创建(适合创建大量进程,简单,推荐!) image.png from multiprocessing impor
zhaoolee
2018/04/19
1.4K0
Python3简单实现多任务(多进程篇)第一种:进程池快速创建(适合创建大量进程,简单,推荐!)第二种实现方式(Process创建进程,需要手动管理)第三种实现方式(windows无法使用,只能在类U
python网络-多进程(21)
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。---来自百度百科
Se7eN_HOU
2019/09/11
5170
python网络-多进程(21)
Python中的并发之多进程的讲解
在Python的并发变成中,由于GIL的限制,多线程无法很好的应对计算密集型的并发情况,这时候就需要使用多进程的方法进行解决。
泽霖
2023/11/26
4170
python中进程的几种创建方式
multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:
Python学习者
2023/07/06
2750
Python进程学习
Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
py3study
2020/01/08
5430
Python的进程
Python实现多进程的方式主要有两种:一种方法是使用os模块中的fork方法; 另一种是使用multiprocessing模块。这两种方法的区别在于前者仅适用于Unix/Linux操作操作。对win是不支持的,而后者则是跨平台的实现方式。
龙哥
2018/10/22
6680
python3多进程实现
python多进程的主要方式有两种,一种是使用os模块的fork方法,另一种方法是使用multiprocessing模块,这两种方法的就别在于前者仅适用于Unix/Linux操作系统,后者是跨平台的实现方式
py3study
2020/01/10
3630
Python自学成才之路 多进程开发
在python中可以通过os.fork()创建子进程,但是这种方式只能在linux,unix,mac下面使用,不能跨平台,所以一般不推荐使用这种方式。Python提供了一个multiprocessing模块来创建多进程,这种方式写起来更简单,且支持跨平台,一般推荐使用multiprocessing模块来创建多线程。
我是李超人
2020/09/07
2880
Python | Python学习之多进程详解
我们经常迷惑于多进程和多线程,长的好像一样,但是他们有本质上的区别,很多大佬也对进程和线程的概念做了很多通俗易懂的解释,这里我们引用阮一峰老师的博文,大家可以先去看看,理清楚线程和进程的区别。
咸鱼学Python
2019/10/09
1.1K0
【python进阶】深入理解系统进程2
前言 在上一篇【python进阶】深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing 如果你打算编写多进程的服务程序,Unix/Linux⽆疑是正确的选择。由于 Windows没有fork调⽤,难道在Windows上⽆法⽤Python编写多进程的程 序? 由于Python是跨平台的,⾃然也应该提供⼀个跨平台的多进程⽀持。 multiprocessing模块就是跨平台版本的多进程模块。 multi
Angel_Kitty
2018/06/14
6850
Python基础(16)——进程&线程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。[3] 进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
羊羽shine
2019/05/28
3660
Python 3 多进程
进程指的是正在进行的一个过程或者一个任务,而执行这个任务的是CPU。进程与程序的区别,可以理解为程序是我们写的一堆代码,而进程则是CPU执行这堆代码的过程,同一个程序被执行两次,就会产生两个进程。凡是硬件,都需要有操作系统进行管理,只要是操作系统,就会有进程概念,需要有创建进程的方式。进程的三种状态:
用户6184845
2019/10/16
1K0
Python 3 多进程
Python(十)
Python 既支持多进程,又支持多线程,本篇,我们看看如何编写这两种多任务程序。
1ess
2021/11/01
3510
Python 使用 os.fork() 创建子进程
Linux 操作系统提供了一个 fork() 函数用来创建子进程,这个函数很特殊,调用一次,返回两次,因为操作系统是将当前的进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的 PID。我们可以通过判断返回值是不是 0 来判断当前是在父进程还是子进程中执行。 在 Python 中同样提供了 fork() 函数,此函数位于 os 模块下。 下面是一个例子 import os import time print "Before fork process p
kongxx
2018/05/14
1.9K0
Python 学习之进程与线程 「 上 」
进程:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器(任务)就是启动一个浏览器进程。进程是系统中程序执行和资源分配的基本单位,每个进程都有自己的数据段、代码段和堆栈段。
Python技术与生活认知的分享
2018/08/16
3150
Python 学习之进程与线程 「 上 」
python 进程
[chaoge@localhost ~]$ line19:fork进程0,PID=1628,父PID=1
py3study
2020/01/09
7610
python进程回顾
pro = multiprocessing.Process(target=入口, args=(), kwargs={})
小闫同学啊
2019/07/18
6240
python3--中的进程操作--multiprocess模块
运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块。
py3study
2018/08/02
1.3K0
python3--中的进程操作--multiprocess模块
Python多进程原理与实现
进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编
软件架构师Michael
2022/03/10
5020
python进程模块
然后还有一个os.fork函数,可以调用系统api并且创建子进程。但是fork在Windows上并不存在,在Linux和Mac可以成功使用。因为手头没有Linux的机器,就没尝试这个。
灯珑LoGin
2022/10/31
3250
相关推荐
Python3简单实现多任务(多进程篇)第一种:进程池快速创建(适合创建大量进程,简单,推荐!)第二种实现方式(Process创建进程,需要手动管理)第三种实现方式(windows无法使用,只能在类U
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档