Play Framework 框架初识

Play介绍

Play Framework是一个开源的Web框架,背后商业公司是Typesafe。要介绍Play之前,首先理清Play的两个不同的分支。 
Play 1.x 使用Java开发,最新版本是1.3.1,只支持Java项目。从11年开始就进入了维护阶段,新项目一般不考虑使用Play1。 
Play 2.x 使用Scala和Java开发,同时支持Java和Scala项目。

Play:通过ClassLoader在源代码修改的时候动态加载类,解决了修改代码需要重启服务器的问题

一,Play特性

1,Play2的模板引擎

相对于Java领域其他模板引擎(Freemarker, Velocity, JSP, Groovy, etc), 主要有三个特点.
1) 简单易上手, 没有JSP里面繁杂的内置对象和指令, 所有功能都通过方法调用完成.
页面都会被自动编译成方法(准确地说是一个Scala object),所以相当于方法调用。所有的一切都是方法调用。
2) 主流IDE中都支持Play模板的静态类型检查, 类似JSP.
3) 支持反向路由.
在Play中, 所有的Controller url都配置在一个routes文件中,例如:GET    /register      @controllers.user.LoginController.registerPage
在Controller中使用 redirect(routes.LoginController.registerPage()) 就能实现重定向。 
而在模板中使用 <a href="@controllers.routes.LoginController.registerPage()"> 来指向链接。这种风格就是REST里的URI模板。

2,热部署

不需要重启服务器,修改源码后刷新网页即可。

3,内置dev/prod环境,内置部署脚本

平常开发的时候使用run启动Play,是跑在dev模式,
Play会定时扫描源码目录进行热更新,并且类都是访问的时候再加载,提高启动速度。
使用start启动项目,就是运行在prod模式
Play内置dist命令,可以把所有的文件打成一个zip包,解压之后直接运行bin目录下的可执行文件即可启动项目,除了JDK以外无需任何其他外部依赖。
这大大减轻了运维成本,同时也能够很方便的进行持续集成(CI)。

4,使用Play开发的server大部分能做到Stateless

Play丢弃了Servlet\jsp中的session等概念,内置没有提供方法将对象与服务器实例进行绑定。
推荐做法:使用外部缓存,如Rddis、Memcached等。
有些人认为没有session是play的一个缺点,但只要你开发过流量大一点的应用,你就会理解这点。

5,好用的配置库

play使用Typesafe Config库,配置文件使用hocon格式,默认配置文件为application.conf。

6,play插件

插件比较丰富

7,优秀的测试支持

Play诞生的时候TDD已经很火热了,所以Play对测试的支持非常好。
Play还内置了对Selenium WebDriver的支持,可以模拟浏览器进行测试。

8,优秀的REST支持

Play2从诞生起就能很容易的支持RESTful风格的架构.

二,Play使用过程中遇到的坑

1,首次编译速度过慢

这是Scala的锅。Scala在编译过程中要经历至少30个步骤, 导致编译速度相当慢。
机器(Core™ i5-4590 CPU @ 3.30GHz,RAM 8GB)上,编译100多个Scala类大约需要1到2分钟。
好在sbt可以增量编译, 即首次编译之后,你再修改代码,编译器只会编译那些它认为需要编译的类,编译几个类的时候速度很快,基本刷新页面就能完成。

2, IDE的Scala插件偶尔会误报错误

3, Scala和Sbt的学习成本较高

使用Play for Java版本,项目代码99%都是Java代码, 而Sbt类似于Maven,
一旦项目搭建好后不需要过多接触,只要学会几个常用的命令就可以了,例如project root(切换项目), run(启动服务器在dev模式)。 

4,Play的API变化速度比较快

 三,Play应用 —— Hello World 

1,搭建Play环境

1)安装JDK6,下载Play2.0;
2)解压Play2.0到D盘根目录下,配置环境变量(将play解压目录配置到系统变量的path中);
3)测试Play是否安装成功:启动命令行,输入“play”,出现paly图形,即成功。

2,新建Play项目

1)进入要新建项目的目录,命令行中输入 “play new 项目目录”;
2)确认项目名称,选择项目类型;
3)OK,项目基本内容搭建好了。(可对项目具体内容进行修改)

3,运行项目

1)进入项目目录;
2)命令行输入“play run 项目名称”;(项目启动后会显示相关项目运行信息,端口等)
3)浏览器地址输入“http://localhost:9000” 回车,即可访问新建的项目。

 四,Play原理

1,一切从route开始

play应用的入口是 conf/routes 文件
(该文件定义了全部Play应用中URL对应的Action)
如:GET(请求方式)     /(路径)      controllers.Application.index(对应动作)

2,控制代码(Controller)

Play Web 应用的调用顺序和关系:
浏览器——> Play框架(conf/routes) ——> 对应的controller代码(app/controllers/Application.java) ——> 对应的返回Action 
——> 对应的可返回result代码 ——> 要返回的正文内容

3,Play模板(View)

/app/views目录

4,Play业务数据和模型(Model)

app/models目录下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值