play教程 第三课:初识play运行机制

你叫什么名字,今年多大?

-MVC
play架构风格是严格按照MVC架构的,分别对应app目录下面的三个文件夹——models、views、controllers,由此形成了play独特的包结构。play的包结构是颠覆我们之前用过的那些框架的,比如springMVC、struts等。

实体类全部在models文件夹中定义,包括对数据库的操作方法也都写在实体类中(后文具体讲解);业务逻辑统统在controllers层定义;html文件即展示层都在views包中定义。
play教程 第三课:初识play运行机制_第1张图片
图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

你可能感兴趣的:(play)