总结:HttpModule 和HttpHandler是Asp.net管道的两个重要组件。请求最终处理通过HttpHandler完成。MVC就是通过名为MvcHandler自定义HttpHandler现实对Controller的激活和Action的执行。但对c 和A名称的解析是通过Asp.net的URL路由系统完成,而整个URL路由系统是通过名为UrlRoutingModule的自定义HttpModule实现的。

第一 Asp.net路由系统 有一个针对整个Web应用的全局路由表,表中每一个路由对象 具有一个可以包含变量的URL模版。Asp.net 路由系统 即作为自定义 HttpModule的UrlRoutingModule通过注册HttpApplication的PostResolveRequestCache事件进行拦截,并利用路由表与请求的URL进行匹配得到相应路由数据,交给HttpHandler动态映射来实现(从可扩展性的角度来讲,通过三种方式显现我们需要的路由方式,详见p80)。

第二 MVC对Asp.net路由系统扩展。Asp.net路由系统通过注册URL模版与物理文件之间映射进行实现了请求地址与文件路径分离,但对于MVC请求目标不是物理文件,而是controller中的Action,处于自身考虑,mvc对asp.net路由系统进行扩展。

1.路由映射 根据aps.net RouteCollection类型自定义了System.Web.Mvc.RouteCollectionExtensions,包含两个方法IgnoreRoute用于注册不需要URL模版;MapRoute用于基于URL模版的路由注册(p61)

2.基于Area的路由映射,根据Area相当于划分不同小系统,每个Area里面包含独立的 c v m和配置文件。Area路由映射通过System.Web.Mvc.AreaRegistration进行注册(P67)

第三 MVC框架扩展--URL研发人员自定义扩展,即:从可扩展性的角度来讲,通过三种方式显现我们需要的路由方式,详见p80

Artech的MVC4框架学习——第二章URL路由的更多相关文章

  1. Artech的MVC4框架学习——第一章初步认识ASP.NET MVC

    前言: Artech觉得掌握ASP.NET MVC具有三个层次. 第一层了解基本的编程模式,掌握Controller和View的定义方式,知道路由如何注册以及验证规则如何定义. 第二个层次要求我们对A ...

  2. Artech的MVC4框架学习——第三章controller的激活

    第一当目标controller的名称通过URL路由被解析出来后,asp.net mvc利用 ControllerBuilder 注册 ControllerFactory ,根据名称实现对目标contr ...

  3. Artech的MVC4框架学习——第五章Model的绑定

    第一Model绑定本质就是为目标Action方法生成参数列表的过程,参数数据存在于http请求.请求的 URL .消息报头或主体中. 第二aciton 参数的元数据通过 ParameterDescri ...

  4. Artech的MVC4框架学习——第七章Action的执行

    概况:Action的执行不仅包含action方法的执行,还包含相关筛选器的执行. 第一基于线程池的请求,http请求称谓工作线程(p321),基于线程池优势:工作线程重用和工作线程数量的限制. 第二两 ...

  5. Artech的MVC4框架学习——第六章Model的验证

    第一Model验证旨在为通过Model绑定生成参数进行检验以确保用户输入数据的有效性(p318) 第二Model验证分两种:服务器端(三种解决方案 p256)和客户端(ajax\jQuery) 第三服 ...

  6. Artech的MVC4框架学习——第四章Model元数据的解析

    总结: 第一Model元数据是针对 数据类型的一种表述信息. 第二Model元数据作用:控制数据类型本身及其成员,通过相应的特性,在view中 为绑定的数据(Model)实现模版化的html呈现. 第 ...

  7. Struts2框架学习第二章——Struts2下的HelloWorld

    本章要点 —  Struts 2的下载和安装 — 纯手工创建一个Web应用 — 纯手工创建一个Struts 2应用 — 实现Struts 2的Action — 配置Struts 2的Action — ...

  8. Artech的MVC4框架学习——第八章View的呈现

    总结:定义在controller中的action方法一般会返回actionResult的对象对请求给予 响应.viewResult是最常见也是最重要的ActionView的一种(p411).view模 ...

  9. Django 学习第二天——URL路由及模板渲染方式

    URL 的概念及格式: URL的引入:客户端:知道了url 就可以去进行访问: 服务端:设置好了url,别人才能访问到我 URL :网址(全球统一资源定位符):由 协议,域名(ip port) ,路径 ...

随机推荐

  1. IntelliJ IDEA 终极破解

    1. 下载破解补丁(JetbrainsCrack-2.6.10-release-enc.jar): http://idea.lanyus.com/jar/JetbrainsCrack-2.6.10-r ...

  2. Android让文本输入框默认不获取焦点

    项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕. 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上的 ...

  3. jenkins 忘记admin用户账号密码

    一不小心,忘记了admin用户的账号密码.然后就看不到manage jenkins的那部分内容了,看不到就改不了用户权限,也就是系统瘫痪了. 于是,想着开始没注册账号和密码的时候,都能看见,也就是没有 ...

  4. Visual Studio 2012中使用GitHub

    前言 一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等 一系列工具进行Copy,然后回家才能继续在原来的基础上作业 ...

  5. Ruby 面向对象知识详解

    Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现.Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串.数字,甚至连 true 和 false 都是对象.类本身也是一个对象 ...

  6. linux环境中iostat命令的安装,解决-bash: iostat: command not found问题

    需求说明: 今天在测试环境的主机上,准备通过iostat来查看系统的io情况,发现没有该命令 [root@testvm Packages]# iostat -bash: iostat: command ...

  7. linux环境中安装iotop命令,解决-bash: iotop: command not found问题

    需求描述: 今天在测试环境中,准备查看mysql各个线程占用的io的情况,准备使用iotop命令来查看,发现没有这个命令 [root@testvm Packages]# iotop -bash: io ...

  8. mysql 用户权限操作

    https://www.cnblogs.com/SQL888/p/5748824.html http://blog.csdn.net/fafa211/article/details/2249217

  9. Java显示指定类型的文件

    文件作为存储数据的单元,会根据数据类型产生很多分类,也就是所谓的文件类型.在对数据文件进行操作时,常常需要根据不同的文件类型来作不同的处理.本实例实现的是读取文件夹指定类型的文件并显示到表格控件中.这 ...

  10. web.xml 整合 SpringMVC

    啦啦啦 <context-param> <param-name>defaultHtmlEscape</param-name> <param-value> ...