zoukankan      html  css  js  c++  java
  • 前后端分离--三层

    建议先了解怎么分两层,http://www.cnblogs.com/-beyond/p/7954177.html

    再分两层的基础上,还可对后端处理数据的那一层再一分为二,一层为模型层(model),一层为控制层(controller)

    其中模型层(model)的任务是对数据进行处理,然后提供一个接口(interface、function)给控制器层(controller),控制器层把数据(通过调用模型层提供的接口获得) 分配(或者说是指派)给视图层(view),视图层就是分成两层时的模板(template)。

    代码示例如下:

    视图层(view.php)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<h1>根据ID获得姓名</h1>
    	<form action="">
    		<input type="text" name="id">
    		<input type="submit" name="submit">
    	</form>
    	<p>
    		<?php 
    			if(!empty($result)){
    				echo $result;
    			} 
    		?>
    	</p>
    </body>
    </html>
    

    然后是控制器层(controller.php):

    <?php 
    	// 载入模型层
    	include("model.php");
    
    	//获取视图层传来的数据
    	$id=isset($_GET['id'])?$_GET['id']:"";
    
    	//调用模型层的方法,获得数据,并将数据进行处理。
    	$result="查询结果是:".getNameByID($id);
    
    	//载入视图
    	include("view.php");
     ?>
    

    最后是模型层(model.php):

    <?php 
    	//此处简单模拟从数据库查询过程。
    	function getNameByID($id){
    		$name=array("one"=>"张飞","two"=>"刘备","three"=>"关羽");
    		if(array_key_exists($id, $name)){
    			return $name[$id];
    		} else {
    			return "暂无此人";
    		}
    	}
     ?>
    

      运行结果如下:

      总结:

      模型层只负责产生并返回数据(通过提供一个接口给控制器层),一般不会对数据进行额外的格式处理,格式处理的工作应该交给控制器层来做;

      控制器层只是接受视图层的请求,根据请求来调用模型提供的接口来获取数据,并对数据的格式等进行处理后 指派 给视图

      视图负责展示 包含控制器层分配的 数据的 界面

  • 相关阅读:
    js-快速选择日期区间
    关于状态更新时间字段取值的问题
    MySql 前缀索引
    Java springMVC 多数据源的实现和使用
    哈哈哈,终于找到一个安稳的“家”了
    POJ 1724: Roads
    POJ 1221: UNIMODAL PALINDROMIC DECOMPOSITIONS
    createjs 用户画线 粗细bug Graphics setStrokeStyle() 粗细BUG
    GAudio是一个音频播放SDK
    新做的一个基于OPENGL的gui库
  • 原文地址:https://www.cnblogs.com/-beyond/p/7954429.html
Copyright © 2011-2022 走看看