play教程 第三课:初识play运行机制
2015-09-09 14:21
471 查看
你叫什么名字,今年多大?
-MVCplay架构风格是严格按照MVC架构的,分别对应app目录下面的三个文件夹——models、views、controllers,由此形成了play独特的包结构。play的包结构是颠覆我们之前用过的那些框架的,比如springMVC、struts等。
实体类全部在models文件夹中定义,包括对数据库的操作方法也都写在实体类中(后文具体讲解);业务逻辑统统在controllers层定义;html文件即展示层都在views包中定义。
图4-1
-创建Controller
在controller包下新建一个类,取名Sayhello,并让其继承Controller类,在此类中写两个方法,先不要问为什么,一字不漏、不差地写这样两个个方法。
public static void index() { render(); } public static void age(String name,String age){ render(name ,age ); }
-创建views层展示文件
在views包下,创建一个文件夹名称叫Sayhello,注意必须要和controllers下刚才创建的那个类完全一样的名字,在这个文件夹下新建两个html页面,名字叫index.html和age.html,注意必须和Sayhello类中的那个方法名完全一样的名字。
在index.html中写一个form表单,用来提交姓名和年龄。
你叫什么名字?今年多大? <form action= "@{Sayhello.age()}" method ="post"> 姓名:<input type ="text" name="name"/> 年龄:<input type ="text" name="age"/> <input type= "submit" name ="hello" value="提交"/> </form>
在age.html中写这样一句
<h1> Hello,my name is ${name?:'guest'} and I'm ${age} years old.</h1>
-运行项目
在浏览器地址栏中输入localhost:9000/Sayhello/index,填写姓名和年龄,点击提交,页面跳转至age.html并显示刚才输入的姓名、年龄。
-play的运行机制
首先从play的包结构说起,列举几个我们经常用到的包——models、views、controllers、public、conf。上面已经提到了models、views、controllers三个包存放的内容;public用于存放html文件中用到的images、css、javascripts等;conf目录内是常用的配置文件,如常用的application.conf、routes等。
上面有两个地方都强调一定要“完全一样的名字”,为什么呢?这就是play的运行机制。由图4-1可见,浏览器端的请求经controller层处理后最终要render(英文义为“递交、给予”)给view层的html文件来展示处理结果。那么问题来了,controller层的类里面并没有指定跳转到哪个页面(传统框架通常通过配置文件指定跳转路径),它是怎样知道我想要用哪个html文件来呈现内容呢?play的办法是在views目录下建一个和controllers类名完全一样的文件夹,在这个文件夹中新建html网页,名字要和controllers类里的方法名完全一样,这样,通过该方法render之后,就会自动跳转到对应的同名html。
那么参数是如何传递的呢?input中的name名字对应方法的参数名,play可根据参数名直接取值;向页面传值时,只需在render()方法中加参,页面中通过标记语言${}取值。
图4-2
相关文章推荐
- 使用Apache的rewrite技术
- ThinkPHP报Class 'Core\Log' not found竟然是由这个原因导致的
- hadoop2.4.1的ftpserver建立
- X509证书中RSA公钥的提取与载入
- JS闭包
- ExecutorService中submit和execute的区别
- Django的models中filter的各种用法
- linux setsid 是什么东东
- vs断点未能绑定
- 视频播放的基本原则
- 修改dbwr后台进程数量
- 修改nexus 7的boot.img,打开系统调试
- iSCSI的基础实验
- Xcode报错提示:“Info.plist couldn't be opened because there is no such file”
- 话说MOSFET的应用
- ALM11测试计划页面图解1
- 源码:从控制台接收数据
- eclipse 安装svn插件
- 简单的评价案例
- oracle中with table as临时表