在我们web应用的开发中,经常会听见或看见单一入口模式,在我开始学习tp框架的时候也不理解为什么要运用一个单一入口模式,只是会使用,最近自己在搞一个小东西的时候才明白为什么在web开发中要运用单一入口模式。

  那么,什么叫单一入口模式呢?单一入口模式官方版就是用一个文件处理所有的请求。其实,说通俗一点就是,当我们访问一个网站,都是在地址栏中通过http的请求访问,在http的请求中,我们需要标明我们要访问什么页面,什么内容,单一入口模式就是将你所有的请求都通过这一个文件转发出去,就好比a想找b,找c,找d,多入口就是找谁直接去找,单入口就是如果a想找b,需要先通过e,告诉e找c什么事,然后e再去找c。这样我们就可以很好的看出来单入口模式的优点就在于安全,单入口可以将过滤掉一些非法的字符和请求。

  php实现单一入口模式:

  一个简单的单一入口文件非常容易实现,既然没有了多入口,那么必然就会变成单入口多参数的形式。所以,在访问index.php时传入规定格式的参数,比如:http://localhost/index.php?con=article&met=list  上述表示我们想要访问article控制器的list方法,即请求一个文章的列表页。

 <?php
$controller=$_GET["con"]==""?"index":$_GET["con"]; //获取get请求的参数信息,如果没有参数,则默认给定index
$method=$_GET["met"]==""?"index":$_GET["met"];
require_once($controller."Controller.class.php"); //包含对应请求的控制器文件
$obj=new $controller."Controller()"; //实例化控制器对应的类
$obj->$method."()"; //调用对应请求的方法
?>

上述代码就实现了一个最简单的单一入口模式的请求,在http请求时,传入对应的参数,然后通过index.php的文件对传入的参数进行获取,获取后找到相应的文件,然后进行调用访问。这样就实现了在单一入口模式下对整个网站的访问。

  单一入口模式最主要的优点就是安全,可以在入口文件中对请求字符中的非法字符进行过滤。当然事情都有两面性,看网站大神所写这种模式对搜索引擎不友好,搜索引擎不认为它是一个正常的URL,可以改用pathinfo的方式。不过目前还没有学习到那种程度,所以以后会更加深入的学习。

对web应用中单一入口模式的理解及php实现的更多相关文章

  1. MVC架构中的Repository模式 个人理解

    关于MVC架构中的Repository模式   个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接 ...

  2. 高访问量WEB开发中的架构模式,学习从点滴开始

     当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构 ...

  3. web.config中的InProc模式 与 StateServer模式[转]

    开发asp.net应用时,修改web.config中的SessionState节点. <sessionState mode="StateServer" stateConnec ...

  4. web自动化测试中的PO模式(一)

    1.PO模式的思想 原理: 将页面的元素定位和元素行为封装成一个page类 类的属性:元素的定位 类的行为:元素的操作 页面对象和测试用例分离 测试用例: 调用所需要页面对象中的行为,组成测试用例 测 ...

  5. 关于bottle WEB框架中签名cookie的一点理解

    首先要理解一个概念 MAC (message authenticate code) 消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具. 构造方 ...

  6. 关于java中生产者消费者模式的理解

    在说生产者消费者模式之前,我觉得有必要理解一下 Obj.wait(),与Obj.notify()方法.wait()方法是指在持有对象锁的线程调用此方法时,会释放对象锁,同时休眠本线程.notify() ...

  7. php单一入口和多入口模式详细讲解

    php单一入口模式可谓是现在一种比较流行的大型web应用开发模式,比如当前比较流行的一些php开发框架,zend,thinkphp,qeephp,还有cakephp 等他们都是采用的单一入口模式的.本 ...

  8. Web前端开发中的MCRV模式(转)

    作者: izujian  来源: baiduux 摘要:针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为 基础,结 ...

  9. 转 web项目中的web.xml元素解析

    转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45)   阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...

随机推荐

  1. zoj 1078

    非常简单的题,没什么好说的.唯一值得一提的就是在判断是否是回文的时候只需遍历一半的元素即可,稍微提高一点性能. #include<iostream> using namespace std ...

  2. jquery读取本地文件

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...

  3. 2-4. BCD解密(10)

    BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位.所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12.但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了 ...

  4. Linux下对字符串进行MD5加密

    Linux下对字符串进行MD5加密 比如要用MD5在linux下加密字符串“test",可以使用命令:$ echo -n test|md5sum098f6bcd4621d373cade4e8 ...

  5. ecshop后台添加菜单项,权限问题

    ecshop后台自定义菜单涉及到几个重要的权限控制的文件,先做如下总结: 后台添加菜单项,并设置权限的步骤.:(以在系统模块添加申请友链菜单为例)commn.php       : \language ...

  6. 谷歌page speed 安装使用及页面问题详解

    原文地址:http://wenku.baidu.com/view/b0a61f3ebcd126fff7050b40.html 谷歌page speed 安装使用及页面问题详解 谷歌page speed ...

  7. LInux 下安装jdk

    安装jdk版本为1.6.0_12 一.下载jdk 下载地址:http://download.java.net/jdk6/ 选择Linux Platform jdk-6u12-linux-i586.bi ...

  8. poj3507---去掉最小值和最大值

    #include <stdio.h> #include <stdlib.h> int main() { ) { ,max=,min=,t; ; i<; i++) { sc ...

  9. Android Notivation的使用

    官方帮助文档:http://wear.techbrood.com/guide/topics/ui/notifiers/notifications.html 博文推荐:http://blog.csdn. ...

  10. AndroidUI 视图动画-旋转动画效果 (RotateAnimation)

    RotateAnimation,能实现Android的视图的旋转效果,废话不多说直接上代码. 新建一个Android 项目,在activity_main.xml中添加一个按钮,然后使用Relative ...