下载安装jdk1.5以上,我用的是1.7

然后下载play-1.2.7,版本可用别的,将play的根目录直接添加到环境变量Path

打开命令行 输入“play new test”(名字自定义)

然后会提示是否确认你的项目名,直接enter

再输入 “play run test”

打开 eclipse import项目,会出现很多文件夹,play框架运用的是MVC模式

app文件夹便存放了Model、 View、Controller这三层

app/controllers 

控制器就是一个java类,其中的每个public/static方法都是一个action。一个action方法就是一个java入口点,当接到一个http请求时,就会调用这个action。action方法从http中提取数据,读取或更新model对象,并向http请求者发送一个封装好的response结果。所以controller更像view和model之间的一座桥梁。

app/models

model是一系列完全面向对象语言特征的java类,它包含了数据结构和数据操作。无论何时,model对象都需要存储到持久化存储设备里。一般情况下,它们还包含一些jpa注释和sql语句。

app/views

view为play提供的高效模板,控制器从model层获取一些感兴趣的数据应用到模板,并通过这个模板把数据装饰的特别漂亮。这个包有HTML、JSON,或其它特别用于动态生成model展现的模板文件组成。

conf

这个文件夹中放置了play的配置文件,其中application.conf是play框架的核心配置文件,比如配置数据库,应用程序端口号等基础性的应用程序配置都在这里面。

routes是http请求和该请求调用的应用程序方法之间的映射。

==========================================================================

conf/routes

文件中的'#'为注释。

routes文件列出了所有应用程序所需要的路由。

该配置文件的左栏为HTTP方法+URL路径(这种组合就叫作一个路由),右栏为对应的java调用。

如 GET     /                                         Application.index

GET为http方法,而'/'则表示根目录localhost:9000,所以上面红色代码的意思为访问根目录时(程序运行后的第一个页面)调用Application.java中的index方法

app/controllers/Application.java

index调用了一个render()方法,而此时的render()方法则是返回了与java方法index同名的index.html文件,也就是运行程序后在网页中输入localhost:9000会根据ulr调用index方法进而显示index.html

如何运行项目呢?看图

右键点击eclipse中的.launch文件,Run As 选择第一个 运行

运行成功控制栏中会显示 Server is up and running

然后进入浏览器输入lcalhost:9000 则会显示下面页面

是因为我们的index.html页面还没有写任何内容

app/view/Application/index.html

#{welcome /}就是我们上一个图片显示的页面,如果删掉则运行后的页面会变成空白。

而#{extends 'main.html' /}表示index页面继承自main.html

可以看到main.html里定义了一些共通的元素,如所用的css和js库等。

通过继承的方式,可以使得模板的复用性大大增强。

#{doLayout /} 指示index.html的内容是插入此处的。

接下来就编辑index.html

我们把#{welcome /}删除掉了,写了一个 form,其中@{}的作用是自动生成可以调用Application.sayHello  action的URL

在routes中可以表示为 GET /Application/sayHello         Application.sayHello

运行程序后我们会调用Application.sayHello,但是我们没有sayHello方法,所以去Application.java加上这个方法

在form中我们通过submit提交自己的姓名,调用action,找到sayHello方法通过render将我们的名字上传到http,但是上传到上面之后却没有页面去显示这个数据,所以我们需要写一个同名sayHello.html来显示信息。

app/views/Application/sayHello.html

通过${}将http中的信息取出,myName?:'Null'意思为先判断myName是否存在,如果不存在就显示Null(当然也可以写其他的),如果存在就显示取出的myName。

测试一下 输入名字lucy

               

不输入任何东西

可以看到,现在页面的URL为localhost:9000/application/sayhello?myName=lucy

我们也可以在routes中进行优化

那么页面URL会显示为

添加一些基本校验,编辑Application.java

@Required是校验myName是否存在,如果不存在输出Please input your name. 而这些错误信息都是存放在play的flash scope。对了,不要忘记import play.data.validation.*; (我忘记截上了)

 然后重定向到index.html页面上,所以重新编辑index.html页面

如果错误信息存在就从flash scope中取出显示到页面上。

对的,就是这样。

初学Play Framework(一)相关推荐

  1. Web 高效开发必备的 PHP 框架

    为什么80%的码农都做不了架构师?>>>    ​​码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能 ...

  2. 初学c#读书笔记(一)--c#和.NET Framework

    开篇废话      Java的读书笔记因为有的没的原因中断了,现在新写的c#读书笔记总结之前的经验准备作出一些改变.      不在以学校课本为主:c#读书笔记是以<c#图解教程>和< ...

  3. 初学实体框架EF(Entity Framework)

    什么是EF? 实体框架EF是微软的一个ORM框架.是支持面向数据的软件开发应用程序. ORM是面向对象的对象模型和关系型数据库的数据结构之间的相互转换.EF是ORM框架的一种,其中O代表实体,M代表的 ...

  4. 学习使用RIA Framework Flex创建MySQL管理UI(初学Flex实例教程)

    引言:一直想学习Flex来着,平时都是因为太懒的缘故,没有去实践,在csdn上无意看到这篇博文,觉得对自己挺有帮助的,就引过来了~ PHPMyAdmin的出现震撼了业界,这毫无疑问.它当然是基于PHP ...

  5. java web开发初学_2018年学习Web开发的绝对初学者指南

    java web开发初学 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . If yo ...

  6. jqMobi(App Framework)入门学习(一)

    jqMobi(App Framework)入门学习(一) 1. 什么是jqMobi? jqMobi是由appMobi针对HTML5浏览器和移动设备开发的javascript框架.是个极其高速的查询选择 ...

  7. 【每周CV论文】初学深度学习图像对比度增强应该要读的文章

    欢迎来到<每周CV论文>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 图像对比度增强,即增强图像中的有用信息,抑制无用 ...

  8. sql注入pythonpoco_.NET EF(Entity Framework)详解

    一丶Entity Framework (一)EF简介 (1)ORM:Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库. (2)插入数据库不再是执行Insert,而 ...

  9. .net Framework各个版本之间的发展

    原文:.net Framework各个版本之间的发展 上个星期看到了.NET 4.0框架退休日期逐渐临近文章,发现自己一直在使用NET  FrameWork,身为一个NET程序员,里面大概的区别自己还 ...

最新文章

  1. linux - command - iftop
  2. echarts一次渲染两个图_一次 Flutter WebView 性能优化
  3. 在python中可以使用for作为变量名对吗,在Python中使用循环来命名变量
  4. linux内存分配缺陷,Linux系统优化-内存错误分析
  5. day33-进程池和线程池
  6. mac 系统下 autoconf 安装
  7. 新手教程:Mac电脑如何设置自动隐藏菜单栏?
  8. ROST CM使用方法
  9. mir2disease:miRNA相关疾病数据库
  10. 物业计算机管理系统论文,物业小区管理系统 计算机专业毕业论文.doc
  11. 微信活动报名源码php,fb1357 Thinkphp活动报名发布微信小程序源码 聚会活动报名小程序含说明...
  12. python f检验 代码_python f检验
  13. kdays 游戏汉化教程[日记版本] 序章 接触
  14. PPT总是处于“只读模式”可以这样解决
  15. 各主流编程语言适用领域——软件工程
  16. 表格维护生成器-部分字段不能修改或不能看见
  17. 多线程——生产者消费者模型
  18. 一些学习经验总结(个人随笔)
  19. 会声会影2020软件新增功能详情
  20. 通过OSG实现对模型的日照模拟

热门文章

  1. jenkins的企业微信通知报错:No appropriate protocol
  2. java 任意多边形面积计算
  3. 【VBS】超级实用小实例:仅用数字编号打开任意指定文件夹(超超超级全面指南)
  4. 爬虫六、gevent协程与queue模块
  5. 支付宝(蚂蚁)开放平台压力测试经验
  6. SAP ABAP守护进程(ABAP Daemon)的实现方式
  7. 基于ensp的网络设计【实现网络互联、限制访问、内外网地址转换】
  8. 熬过最艰难的日子说说
  9. 3d打印机打印obj格式_3D打印的手使人群站起来
  10. python服务端设置心跳处理_Heartrate:看见 Python 程序运行的“心跳”