<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_FlyDragon</title><subtitle type="text">飞龙天惊</subtitle><id>http://feed.cnblogs.com/blog/u/74981/rss</id><updated>2012-05-31T16:36:42Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/74981/rss"/><entry><id>http://www.cnblogs.com/fly_dragon/archive/2012/05/28/2521397.html</id><title type="text">大学应该怎么读?</title><summary type="text">今天在看了一场《非你莫属》的节目后，其中两个应聘求职者对于大学里面没有好好学习，几乎放弃课堂的问题。很多老板和有经验的人都对这些事情做了很深刻的批判。那接下来我谈一下我的感受，以及我的教育观。 其实，经历过大学的都知道，尤其是像我们这些计算机软件行业的学生可能有更深入的体会。不是我们不想，甚至很多学生非常想学得更深入，更加与企业接轨。而实际上，大学里那种教科书式的教学，四年下来，只学到了基础的基础，而且很多所谓的'教授'老师，自己都没经历过实际的项目的锤炼，没有实际的软件开发的经历，怎么可能给学生带来实际中总结出来的经验的启发。还有大学这种死板的教学方式，懒惰的学习氛围让课堂成</summary><published>2012-05-28T07:32:00Z</published><updated>2012-05-28T07:32:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/28/2521397.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/28/2521397.html"/><content type="html">&lt;table id="blogContentTable" style="border-collapse: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: #545454; font-family: Tahoma, 'Microsoft Yahei'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; table-layout: fixed; width: 878px; position: relative; padding: 0px; margin: 0px;" cellspacing="0" cellpadding="0"&gt;&lt;tbody style="padding: 0px; margin: 0px;"&gt;&lt;tr style="padding: 0px; margin: 0px;"&gt;&lt;td style="word-wrap: break-word; padding: 0px; margin: 0px;" valign="top"&gt;&lt;div id="blogContainer" style="position: relative; overflow-x: hidden; overflow-y: hidden; height: 814px; padding: 0px; margin: 0px;"&gt;&lt;div id="blogDetailDiv" style="font-size: 14px; padding: 0px; margin: 0px;"&gt;&lt;div class="blog_details_20120222" style="padding: 0px; margin: 0px;"&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; 今天在看了一场《非你莫属》的节目后，其中两个应聘求职者对于大学里面没有好好学习，几乎放弃课堂的问题。很多老板和有经验的人都对这些事情做了很深刻的批判。那接下来我谈一下我的感受，以及我的教育观。&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;其实，经历过大学的都知道，尤其是像我们这些计算机软件行业的学生可能有更深入的体会。不是我们不想，甚至很多学生非常想学得更深入，更加与企业接轨。而实际上，大学里那种教科书式的教学，四年下来，只学到了基础的基础，而且很多所谓的'教授'老师，自己都没经历过实际的项目的锤炼，没有实际的软件开发的经历，怎么可能给学生带来实际中总结出来的经验的启发。还有大学这种死板的教学方式，懒惰的学习氛围让课堂成为了老师谋生的工具，而很难再找到那种味了学生而奉献出自己的所知所学的精神的老师了。呜呼悲哉！&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;经历过社会的锤炼，经历过一些事情，对社会对人生有了更多的感悟后，我发现人生不仅仅是奢华享受，那种低俗的人生观，是可悲的，是在这物质化的社会影响下，太多的人这样贪图享受。所以这也是我痛下决心进入教育行业，改变这种死板的愚昧式的教育做出自己的贡献。当然，人生立世要尽孝道，这是为人的第一准则。而我也逃避不了这些必须的事情。所以我只能利用我自己对于软件开发上的理解来带来一些收入。但是，真正的教育绝对不能以营利为目的。当我所有该做的事情都做完的时候，我会去山区，去跟孩子们在一块，为下一代启迪自由之思想，独立之人格做点事，让自己做人做的有意义。这也是我的人生观。&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;再回来谈大学教育，其实从小一开始就是这种愚昧和蒙蔽式的教育。印象最深刻的是，小学时候学古诗！那么小的年龄，那么简单的人生经历怎么能理解古人那么经过那么多事情的锤炼后写出的精华的短句呢？而小学、中学、大学都是这种对与错的教育。条条框框下限值了太多人的思维的扩散。而蔡元培时代的北大的教育，思想兼容并包。鲁迅、陈独秀这样进步的青年可以在北大教书，而固步自封的老顽固也可以在北大教书，让学生接触不同的思想，让他们思想更自由，更开放，学生受到的启发更大。而当今的北大....当今的知识分子，还有谁不是为了利益写文字，他们都忘了知识的责任和义务。像孔庆东这样的教授能在北大这样的学府存在，那可是北大啊....那另外一个问题：为什么中国离着诺贝尔奖那么远？而我们看新加坡，看美国，看德国的教育，他们那种从小就培养孩子独立的判断能力，组织领导能力还有演讲的能力。前两天看美国的达人秀的选秀节目，看到他们的文化对我的冲击还是蛮大的，他们每个人都是那么的自信，那么开朗，面对评委他们很坦然的面对成功失败，而从来不认为自己跟评委有地位的差距。而回头看看国人的文化，看看国内的节目....&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;那我们看看国内的大学给了我们什么，其实学习那些基础知识，完全自己学习就可以了。当然老师在教导我们的时候，我们会很快的进入到角色里面去，而且学习起来很快。但是那样很容易受到老师思想的干扰，让自己思维局限到那种思考的方式里面去。而作为老师一定要注意不要强奸学生的思想，要培养学生自己思考的能力，有些事情让学生自己去探索吧，他自己看问题的角度对他自己的启发会更大的。所以我不建议大家不要不去听课，作为年轻人，大学时我们思想最活跃，精力最充沛的时间，一定要好好把握住这个时间。多出去走走，多看看其他方向的书。开阔自己的思维，提高自己的修养。锻炼自己的思维和判断能力，提高自己的演讲才能，提高自己的自信。大学带给我们的是一个独立的时间，让我们独立的去做一些事情，另外就是让我们充分的去充实自己。大学带给我们的另外一个就是：你接触的人中大部分是有修养的人，所以你潜移默化中受到了这种熏陶，你自己的修养和看待事情的能力也慢慢的提升。我向来认为读研究生给我们知识方面带来的不会太多的东西，但是带给我们的修养和看问题的视野，以及学习和研究的能力是在其他地方学不到的，因为研究生阶段你接触的都是导师、教授、博士、院士等一些社会真正的高级知识分子。&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;我给正在读大学的朋友一点建议吧：大学充分利用这些时间，让自己更加充实。勇于打开自己的视野，跟更多的人交流，只有交流才会有思想 的碰撞才会有更宽广的角度看问题。课程还是要上，今天你懒在了床上，明天你还是要拿出更多的休息时间来走完你没走的路。最后，大学给我们一个死的教学制度，但是大家一定要自己把握自己，让自己思想更自由，人格更健全。&lt;/span&gt;&lt;/div&gt;&lt;div style="padding: 0px; margin: 0px;"&gt;&lt;span style="border-collapse: separate; font-family: Tahoma; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: medium; padding: 0px; margin: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;最后送大家一句话，也送我自己：自由之思想，独立之人格。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2521397.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2012/05/28/2521397.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2012/05/27/2519951.html</id><title type="text">Html5 学习系列（三）增强型表单标签</title><summary type="text">引言 在之前的HTML表单标签中，对于一些功能支持的不够好，比如：文本框提示信息（之前只能通过js和input的事件结合处理）、表单校验、日期选择控件、颜色选择控件、范围控件、进度条、标签跨表单等功能。当然这些东西我们都可以直接通过js和dom元素配合实现这些通用的功能。这些功能或者是标签都已经大量的使用在了现代的Web应用中，而这些公共性的东西在早期的HTML标准没有直接的标准支持，而在HTML5中，新标准直接把这些常用的基本的功能直接加入的新的表单标签中，真正把表单功能异常的强大，那就跟我走一下HTML5智能表单之旅吧! 由于最新版本的Opera浏览器对新型表单支持的最为完美,所以建议本b</summary><published>2012-05-27T03:27:00Z</published><updated>2012-05-27T03:27:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/27/2519951.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/27/2519951.html"/><content type="html">&lt;div style="background-color: darkgray;"&gt;&lt;p&gt;&lt;strong&gt;引言&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在之前的HTML表单标签中，对于一些功能支持的不够好，比如：文本框提示信息（之前只能通过js和input的事件结合处理）、表单校验、日期选择控件、颜色选择控件、范围控件、进度条、标签跨表单等功能。当然这些东西我们都可以直接通过js和dom元素配合实现这些通用的功能。这些功能或者是标签都已经大量的使用在了现代的Web应用中，而这些公共性的东西在早期的HTML标准没有直接的标准支持，而在HTML5中，新标准直接把这些常用的基本的功能直接加入的新的表单标签中，真正把表单功能异常的强大，那就跟我走一下HTML5智能表单之旅吧!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 由于最新版本的Opera浏览器对新型表单支持的最为完美,所以建议本blog或者以下示例请在Opera浏览器上打开.&lt;/p&gt;&lt;h3 style="background-color: darkgray;"&gt;HTML5新增加表单标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 新的标准中添加了很多输入型控件，比如：Number、URL、Email、Range、Color等。而他们都是以 input标签的type属性出场，那下面我一一简单介绍一下&lt;span style="color: #ff0000;"&gt;。&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;[以下所有的例子请用Opera浏览器浏览]&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1）只能输入数字的Number类型input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Html代码为:&amp;lt;input type="number" name="demoNumber" min="1" max="100" step="2"/&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果:&lt;input type="number" name="demoNumber" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;:此标签其实就是普通的input标签,只不过是type类型指向了number,标识当前标签接受数字类型输入.另外添加了四个属性.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt;:属性大家很熟悉了用来标识表单提交时的key值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;min&lt;/strong&gt;:是表单标签新增加的属性标识当前输入框输入的最小值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;max&lt;/strong&gt;:那就是最大值了&lt;/p&gt;&lt;p&gt;&lt;strong&gt;step&lt;/strong&gt;：是步长的意思，也就是在点击增大或者减小的时候的增加减少的步长&lt;/p&gt;&lt;p&gt;&lt;strong&gt;小结&lt;/strong&gt;：min，max，step是表单标签中添加的新的属性。另外就是type又增加了一个新的number类型，接受数字输入。而之前我们要做到这样的效果只能通过js在失去焦点时候判断，控制起来不那么方便，现在一切都那么简单简洁。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2）新型Email类型input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="email" name="email" placeholder="请输入注册邮箱" /&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712013061.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;：在上面HTML代码中，相对于之前的标签，不同点：type="email"表示当前input标签接受一个邮箱的输入。另外就是：placeholder="请输入注册邮箱"&amp;nbsp;&amp;nbsp; 这个属性的功能，相信你看到此时的效果的时候你会感到非常想兴奋，而在之前实现此提示信息，需要监听一下文本框的blur事件，然后判断是否为空，为空再去给文本框赋值一个灰色的字体提示信息，而现在只需要一个简单属性指定就可以了，浏览器都帮我们实现了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;小结&lt;/strong&gt;：当表单在提交前，此文本框会自动校验是否符合邮箱的正则表达式，另外placeholder属性带来的提示信息功能太强大了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3）新型Url类型input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这里不再赘述了，跟Email类型input标签类似。只看一效果吧：&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="url" placeholder="请输入网址" name="url" /&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712025845.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4）新型Tel类型input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="tel" placeholder="输入电话" name="phone"/&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712034080.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5）新型range类型input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="range" min="0" max="50" step="5" name="rangedemo" value="0" /&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;input type="range" name="rangedemo" value="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此类型标签的加入，输入范围内的数据变得非常简单容易，而且非常标准，用户输入可感知体验非常好。另外此标签可以跟表单新增加的Output标签一块使用，达到一个联动的效果。看demo源码：&lt;/p&gt;&amp;lt;form action="" method="POST" id="form1"&amp;gt;&lt;br/&gt;        &amp;lt;input type="range" min="0" max="50" step="5" name="rangedemo" value="0" /&amp;gt;&lt;br/&gt;        &amp;lt;output onforminput="value=rangedemo.value"&amp;gt;0&amp;lt;/output&amp;gt;&lt;br/&gt; &amp;lt;/form&amp;gt;&lt;p&gt;运行效果：&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712042798.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6）新的日期、时间、月份、星期input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;相信你如果做过相关的Web项目开发，肯定会遇到相关的js日期控件。而一系列版本问题，使用不方便等问题将一去不复返，因为&amp;hellip;看下面的标签吧：&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="date" name="datedemo" /&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;input type="date" name="datedemo" /&gt;&lt;/p&gt;&lt;p&gt;还有其他的type：month(月)&amp;nbsp; 、time、week、datetime-local、datetime。那赶紧实验一下吧。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7）颜色选择input标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;颜色选择器实现起来还是有点困难的，而现在一切都变得那么简单。且看代码：&lt;/p&gt;&lt;p&gt;Html代码：&amp;lt;input type="color"/&amp;gt;&lt;/p&gt;&lt;p&gt;运行效果：&lt;input type="color" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;8）input标签自动完成功能&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果您有一定的开发经验的话，肯定做过相关的自动完成或者输入提示功能。那这将不再那么复杂，简单几个标签就自动实现此功能，请看如下demo：&lt;/p&gt;&amp;lt;input type="text" autocomplete="on" name="demoAutoComplete" list="autoNames" /&amp;gt;&lt;br/&gt;&amp;lt;datalist id="autoNames"&amp;gt;&lt;br/&gt;       &amp;lt;option  value="飞龙天惊" &amp;gt;&amp;lt;/option&amp;gt;&lt;br/&gt;       &amp;lt;option  value="厚德IT" &amp;gt;&amp;lt;/option&amp;gt;&lt;br/&gt;       &amp;lt;option  value="Flydragon" &amp;gt;&amp;lt;/option&amp;gt;&lt;br/&gt;&amp;lt;/datalist&amp;gt;&lt;p&gt;执行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712053194.png" alt="" /&gt;&lt;/p&gt;&lt;div style="background-color: darkgray;"&gt;&lt;p&gt;&lt;strong&gt;HTML5表单新增属性&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Input标签新增加的特有属性&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;1）autofocus属性&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; demo：&amp;lt;input type="text" autofocus="autofocus"/&amp;gt;&amp;nbsp; 此属性可以设置当前页面中input标签加载完毕后获得焦点。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;2）max,min,step这些上面都介绍过了，都是跟数字相关。&lt;/li&gt;&lt;li&gt;3）placeholder:提示信息属性，上面有demo。&lt;/li&gt;&lt;li&gt;4）multiple：用于文件上传控件，设置此属性后，允许上传多个文件。&lt;/li&gt;&lt;li&gt;5）校验属性：设置了required 属性后预示着当前文本框在提交前必须有数据输入，而这一切都是由浏览器自动完成。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这跟使用Jq Validate的时候一样的爽。而且还添加了：pattern正则表达式的校验。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; demo：input type="text" autofocus="autofocus" required pattern="\d+" /&amp;gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;6）另外一个比较大的改进就是增加了form属性，也就是说，任何一个标签都可以指定它所属于一个表单，而不是必须在&amp;lt;form&amp;gt;&amp;lt;/form&amp;gt;进行包裹了。&lt;/li&gt;&lt;li&gt;且看demo：&amp;lt;input type="text" form="demoForm" name="demo"/&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Form表单标签新增加属性&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: '宋体';"&gt;1）novalidate 属性规定在提交表单时不应该&lt;span style="font-size: 14px;"&gt;验证 form 或 input 域&lt;/span&gt;。&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: '宋体';"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; demo：&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;form&lt;/code&gt; &lt;code&gt;action&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;""&lt;/code&gt; &lt;code&gt;method&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"POST"&lt;/code&gt; &lt;code&gt;novalidate&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"true"&lt;/code&gt;&lt;code&gt;&amp;gt;&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="font-family: '宋体';"&gt;&lt;code&gt;2)autocomplete 属性规定 form 或 input 域应该拥有自动完成功能&lt;/code&gt;&lt;/span&gt;&lt;code&gt;。&lt;/code&gt;&lt;/span&gt;&lt;span style="font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: darkgray;"&gt;&lt;p&gt;&lt;strong&gt;综合性实例&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;    &amp;lt;fieldset&amp;gt;&lt;br/&gt;        &amp;lt;legend&amp;gt;只能表单演示：请用最新Opera 浏览器&amp;lt;/legend&amp;gt;&lt;br/&gt;        &amp;lt;form action="" method="POST" id="form1"&amp;gt;&lt;br/&gt;            &amp;lt;input type="text" autofocus="autofocus" required pattern="\d+" name="auto" placeholder="必填项测试" /&amp;gt;&lt;br/&gt;            &amp;lt;input type="number" name="demoNumber" min="1" max="100" step="2" /&amp;gt;&lt;br/&gt;            &amp;lt;input type="email" placeholder="请输入邮箱" name="mail" /&amp;gt;&lt;br/&gt;            &amp;lt;input type="url" name="url" placeholder="输入正确的网址" /&amp;gt;&lt;br/&gt;            &amp;lt;br /&amp;gt;&lt;br/&gt;            日期：&amp;lt;input type="datetime" name="time" /&amp;gt;&lt;br/&gt;            颜色：&lt;br/&gt;            &amp;lt;input type="color" name="color" /&amp;gt;&amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;input type="range" min="0" max="50" step="5" name="rangedemo" value="0" /&amp;gt;&lt;br/&gt;            &amp;lt;output onforminput="value=rangedemo.value"&amp;gt;0&amp;lt;/output&amp;gt;&lt;br/&gt;            &amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;input type="submit" value="提交表单" /&amp;gt;&lt;br/&gt;        &amp;lt;/form&amp;gt;&lt;br/&gt;        表单外的input标签：&lt;br/&gt;        &amp;lt;input type="text" form="form1" name="demo" /&amp;gt;&lt;br/&gt;    &amp;lt;/fieldset&amp;gt;&lt;br/&gt;&lt;p&gt;&amp;nbsp;执行结果：&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;由于部分属性不能正常提交到博客园后台，上一张图片加源码：&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;图片：&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052712145691.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;实际运行情况：&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;fieldset&gt;&lt;legend&gt;只能表单演示：请用最新Opera 浏览器&lt;/legend&gt;&lt;form id="form1" action="" method="post"&gt;&lt;input type="text" name="auto" /&gt; &lt;input type="number" name="demoNumber" /&gt; &lt;input type="email" name="mail" /&gt; &lt;input type="url" name="url" /&gt; &lt;br /&gt;日期：&lt;input type="datetime" name="time" /&gt; 颜色： &lt;input type="color" name="color" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;input type="range" name="rangedemo" value="0" /&gt; 0 &lt;br /&gt;&lt;br /&gt;&lt;input type="submit" value="提交表单" /&gt;&lt;/form&gt;&lt;p&gt;表单外的input标签： &lt;input type="text" name="demo" /&gt;&lt;/p&gt;&lt;/fieldset&gt;&lt;div style="background-color: darkgray;"&gt;&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在新版本的表单中的确添加了很多令人兴奋的功能。其实进步不是特别大，只不过是把之前的常用的功能，加入到了标准中来定义，然后浏览器帮我们实现了很多我们原先需要自己用js实现的一些功能罢了。但是对于开发者来说，这的确是很不错的一件事情。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2519951.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2012/05/27/2519951.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2012/05/25/2516142.html</id><title type="text">Html5 学习系列（二）HTML5新增结构标签</title><summary type="text">引言在本节中，笔者将向大家讲述三部分内容，分别介绍HTML5时代的召唤，跟HTML4的区别，以及HTML5中带来的新的结构标签。HTML5时代的召唤HTML4与HTML5的区别HTML5新结构标签HTML5时代的召唤 上一代的HTML的标准：HTML4.01和XHTML1.0距离今天已经发布了10多年了，而Web端的应用也已经翻天覆地的变换。而且Web前端没有一个统一的通用的互联网标准，各个浏览器间拥有太多的不兼容，在维护这些浏览器兼容性浪费了太多的时间。再有就是之前的多媒体操作、动画等都需要第三方的插件的支持，而这就造成多平台的兼容性的问题，而这一切在HTML5中都将成为标准，这样就在根本.</summary><published>2012-05-25T00:10:00Z</published><updated>2012-05-25T00:10:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/25/2516142.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/25/2516142.html"/><content type="html">&lt;div class="Section0"&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;引言&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;在本节中，笔者将向大家讲述三部分内容，分别介绍HTML5时代的召唤，跟HTML4的区别，以及HTML5中带来的新的结构标签。&lt;/p&gt;&lt;ul&gt;&lt;li class="p0"&gt;HTML5时代的召唤&lt;/li&gt;&lt;li class="p0"&gt;HTML4与HTM&lt;a name="d2"&gt;&lt;/a&gt;L5的区别&lt;/li&gt;&lt;li class="p0"&gt;HTML5新结构标签&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;HTML5&lt;span style="font-family: '宋体';"&gt;时代的召唤&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;上一代的HTML的标准：&amp;nbsp;HTML&amp;nbsp;4.01&amp;nbsp;和&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;距离今天已经发布了10多年了，而Web端的应用也已经翻天覆地的变换。而且Web前端没有一个统一的通用的互联网标准，各个浏览器间拥有太多的不兼容，在维护这些浏览器兼容性浪费了太多的时间。再有就是之前的多媒体操作、动画等都需要第三方的插件的支持，而这就造成多平台的兼容性的问题，而这一切在HTML5中都将成为标准，这样就在根本上解决了浏览器的差异以及一些第三方插件的问题，让Web应用更加标准，通用性更强，而且更加的独立于设备。&lt;/p&gt;&lt;p class="p0"&gt;HTML5并不是革命性的改变，而只是发展性的。而且对于之前HTML4的很多标准都是兼容的，所有通过最新HTML5标准制作的Web应用也可以轻松的跑在老版本的浏览器上。HTML5标准中的确是集成了很多实用的功能比如：音视频、本地存储、Socket通信、动画等都是之前应用开发中确实感觉到Web端的鸡肋才得到重视和升级的，相信如果你有相关的经验的话也会很有感触。&lt;/p&gt;&lt;p class="p0"&gt;HTML5的目标是：它通过一些新标签，新功能为开发更加简、独立、标准的通用Web应用提供了标准。新的标准解决了三大问题：浏览器兼容问题，解决了文档结构不明确的问题，解决了Web应用程序功能受限等问题。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;HTML4&lt;span style="font-family: '宋体';"&gt;与&lt;/span&gt;&lt;span style="font-family: 'Times New Roman';"&gt;HTML5&lt;/span&gt;&lt;span style="font-family: '宋体';"&gt;的区别&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&lt;strong&gt;1、取消了一些过时的&amp;nbsp;HTML4的标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;其中包括纯粹显示效果的标记，如&amp;lt;font&amp;gt;和&amp;lt;center&amp;gt;，它们已经被&amp;nbsp;CSS完全取代。&lt;/p&gt;&lt;p class="p0"&gt;其他取消的属性:acronym,&amp;nbsp;applet,&amp;nbsp;basefont,&amp;nbsp;big,&amp;nbsp;center,&amp;nbsp;dir,&amp;nbsp;font,&amp;nbsp;frame,&amp;nbsp;frameset,&amp;nbsp;isindex,&amp;nbsp;noframes,&amp;nbsp;strike,&amp;nbsp;tt。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;2、添加了一些新的元素&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;比如：更加智能的表单标签：date,&amp;nbsp;email,&amp;nbsp;url&amp;nbsp;&amp;nbsp;等；更加合理的标签：section,&amp;nbsp;video,&amp;nbsp;progress,&amp;nbsp;nav,&amp;nbsp;meter,&amp;nbsp;time,&amp;nbsp;aside,&amp;nbsp;canvas等。&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;3、新的全局属性：id,&amp;nbsp;tabindex,&amp;nbsp;repeat&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;4、文件类型声明（&amp;lt;!DOCTYPE&amp;gt;）仅有一型：&amp;lt;!DOCTYPE&amp;nbsp;HTML&amp;gt;。&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;5、新的JS&amp;nbsp;API&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;还有很多其他的变化，后续的系列博文中我将一一介绍。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;HTML5&lt;span style="font-family: '宋体';"&gt;的新结构标签&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;在之前的HTML页面中，大家基本上都是用了Div+CSS的布局方式。而搜索引擎去抓取页面的内容的时候，它只能猜测你的某个Div内的内容是文章内容容器，或者是导航模块的容器，或者是作者介绍的容器等等。也就是说整个HTML文档结构定义不清晰，HTML5中为了解决这个问题，专门添加了：页眉、页脚、导航、文章内容等跟结构相关的结构元素标签。&lt;/p&gt;&lt;p class="p0"&gt;在讲这些新标签之前，我们先看一个普通的页面的布局方式：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052410570957.gif" alt="" /&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;上图中我们非常清晰的看到了，一个普通的页面，会有头部，导航，文章内容，还有附着的右边栏，还有底部等模块，而我们是通过class进行区分，并通过不同的css样式来处理的。但相对来说class不是通用的标准的规范，搜索引擎只能去猜测某部分的功能，另外就是此页面程序交给视力障碍人士来阅读的话，文档结构和内容也不会很清晰。而HTML5新标签带来的新的布局则是下面这种情况：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/154994/2012052410554136.gif" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;相关的HTML代码是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;nav&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;nav&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;section&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;br/&gt;      ...&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;section&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;aside&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;aside&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;footer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;footer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;有了上面的直接的感官的认识后，我们下面一一来介绍&lt;span style="font-family: 'Times New Roman';"&gt;HTML5&lt;/span&gt;&lt;span style="font-family: '宋体';"&gt;中的相关结构标签。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;section标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;lt;section&amp;gt;标签，定义文档中的节。比如章节、页眉、页脚或文档中的其它部分。一般用于成节的内容，会在文档流中开始一个新的节。它用来表现普通的文档内容或应用区块，通常由内容及其标题组成。但section元素标签并非一个普通的容器元素，它表示一段专题性的内容，一般会带有标题。&lt;br /&gt;当我们描述一件具体的事物的时候，通常鼓励使用article来代替section；当我们使用section时，仍然可以使用h1来作为标题，而不用担心它所处的位置，以及其它地方是否用到；当一个容器需要被直接定义样式或通过脚本定义行为时，推荐使用div元素而非section。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;section&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;section是什么？&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;一个新的章节&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;关于section&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;section的介绍&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;br/&gt;...&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;section&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;article标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;lt;article&amp;gt;是一个特殊的section标签，它比section具有更明确的语义，它代表一个独立的、完整的相关内容块，可独立于页面其它内容使用。例如一篇完整的论坛帖子，一篇博客文章，一个用户评论等等。一般来说，article会有标题部分（通常包含在header内），有时也会包含footer。article可以嵌套，内层的article对外层的article标签有隶属关系。例如，一篇博客的文章，可以用article显示，然后一些评论可以以article的形式嵌入其中。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;这是一篇介绍HTML 5结构标签的文章&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;HTML 5的革新&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;time &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;datetime&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2011-03-20"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;2011.03.20&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;time&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;文章内容详情&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;article&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="p0"&gt;&lt;strong&gt;nav标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;nav标签代表页面的一个部分，是一个可以作为页面导航的链接组，其中的导航元素链接到其它页面或者当前页面的其它部分，使html代码在语义化方面更加精确，同时对于屏幕阅读器等设备的支持也更好。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;nav&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ul&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;厚德IT&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;FlyDragon&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;J飞龙天惊&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;ul&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;nav&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;aside标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;aside标签用来装载非正文的内容，被视为页面里面一个单独的部分。它包含的内容与页面的主要内容是分开的，可以被删除，而不会影响到网页的内容、章节或是页面所要传达的信息。例如广告，成组的链接，侧边栏等等。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;aside&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;作者简介&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;厚德IT&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;aside&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;header标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;lt;header&amp;gt;标签定义文档的页眉，通常是一些引导和导航信息。它不局限于写在网页头部，也可以写在网页内容里面。&lt;/p&gt;&lt;p class="p0"&gt;通常&amp;lt;header&amp;gt;标签至少包含（但不局限于）一个标题标记（&amp;lt;h1&amp;gt;-&amp;lt;h6&amp;gt;），还可以包括&amp;lt;hgroup&amp;gt;标签，还可以包括表格内容、标识、搜索表单、&amp;lt;nav&amp;gt;导航等。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;网站标题&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;网站副标题&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;header&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;footer标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;footer标签定义section或document的页脚，包含了与页面、文章或是部分内容有关的信息，比如说文章的作者或者日期。作为页面的页脚时，一般包含了版权、相关文件和链接。它和&amp;lt;header&amp;gt;标签使用基本一样，可以在一个页面中多次使用，如果在一个区段的后面加入footer，那么它就相当于该区段的页脚了。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;footer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;br/&gt;COPYRIGHT@厚德IT&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;footer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;hgroup标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;hgroup标签是对网页或区段section的标题元素（h1-h6）进行组合。例如，在一区段中你有连续的h系列的标签元素，则可以用hgroup将他们括起来&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;这是一篇介绍HTML 5结构标签的文章&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;HTML 5的革新&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;hgroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;figure&amp;nbsp;标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;用于对元素进行组合。多用于图片与图片描述组合。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;figure&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;img &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="img.gif"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; alt&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="figure标签"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;  title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="figure标签"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;figcaption&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;这儿是图片的描述信息&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;figcaption&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;figure&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;有了新的结构性的标签的标准，让&lt;span style="font-family: 'Times New Roman';"&gt;HTML&lt;/span&gt;&lt;span style="font-family: '宋体';"&gt;文档更加清晰，可阅读性更强，更利于&lt;/span&gt;&lt;span style="font-family: 'Times New Roman';"&gt;SEO&lt;/span&gt;&lt;span style="font-family: '宋体';"&gt;，也更利于视障人士阅读。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;HTML5&lt;span style="font-family: '宋体';"&gt;旋风来了，你准备好了吗？&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;当然以上只是笔者的观点，每个人都有阅读新技术的角度，欢迎大家转载讨论。&lt;/p&gt;&lt;p class="p0"&gt;参考书：《HTML5与CSS3权威指南》&lt;/p&gt;&lt;p class="p0"&gt;参考网址：&lt;/p&gt;&lt;p class="p0"&gt;&lt;a href="http://www.alistapart.com/articles/previewofhtml5"&gt;http://www.alistapart.com/articles/previewofhtml5&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;a href="http://coding.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/"&gt;http://coding.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;a href="http://www.w3school.com.cn/"&gt;http://www.w3school.com.cn&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;a href="http://zh.wikipedia.org/wiki/HTML5"&gt;http://zh.wikipedia.org/wiki/HTML5&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;a href="http://www.rainleaves.com/html/1338.html"&gt;http://www.rainleaves.com/html/1338.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2516142.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2012/05/25/2516142.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2012/05/22/2513716.html</id><title type="text">Html5 学习系列（一）认识HTML5</title><summary type="text">引言，认识两个标准制定的组织 在讲什么是Html5之前得先了解两个组织；WHATWG：网页超文本技术工作小组（英语：WebHypertextApplicationTechnologyWorkingGroup，缩写为WHATWG），是一个以推动网络HTML5标准为目的而成立的组织。在2004年，由Opera、Mozilla基金会和苹果这些浏览器厂商和一些相关团体形成的一个松散的、非正式的协作组织，这些团体希望发展一些新的技术，从而开发人员可以在互联网上编写并部署应用。另外一个就是大家熟悉的W3C：万维网联盟（WorldWideWebConsortium，W3C），又称W3C理事会,它主要是...</summary><published>2012-05-22T10:36:00Z</published><updated>2012-05-22T10:36:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/22/2513716.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2012/05/22/2513716.html"/><content type="html">&lt;div class="Section0"&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;引言，认识两个标准制定的组织&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 在讲什么是Html5之前得先了解两个组织；WHATWG&amp;nbsp;：网页超文本技术工作小组（&lt;a href="http://zh.wikipedia.org/wiki/英语"&gt;英语&lt;/a&gt;：Web&amp;nbsp;Hypertext&amp;nbsp;Application&amp;nbsp;Technology&amp;nbsp;Working&amp;nbsp;Group，缩写为WHATWG），是一个以推动网络&amp;nbsp;&lt;a href="http://zh.wikipedia.org/wiki/HTML_5"&gt;HTML&amp;nbsp;5&lt;/a&gt;&amp;nbsp;标准为目的而成立的组织。在2004年，由&lt;a href="http://zh.wikipedia.org/wiki/Opera软件公司"&gt;Opera&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/Mozilla基金會"&gt;Mozilla基金会&lt;/a&gt;和&lt;a href="http://zh.wikipedia.org/wiki/蘋果公司"&gt;苹果&lt;/a&gt;这些浏览器厂商和一些相关团体形成的一个松散的、非正式的协作组织，这些团体希望发展一些新的技术，从而开发人员可以在互联网上编写并部署应用。&amp;nbsp;另外一个就是大家熟悉的W3C&amp;nbsp;：万维网联盟（World&amp;nbsp;Wide&amp;nbsp;Web&amp;nbsp;Consortium，W3C），又称W3C理事会,它主要是为解决web应用中不同平台、技术和开发者带来的不兼容问题，保障Web信息的顺利和完整流通，万维网联盟制定了一系列标准并督促Web应用开发者和内容提供者遵循这些标准。标准的内容包括使用语言的规范，开发中使用的导则和解释引擎的行为等等。W3C也制定了包括&lt;a href="http://zh.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;和&lt;a href="http://zh.wikipedia.org/wiki/CSS"&gt;CSS&lt;/a&gt;等的众多影响深远的标准规范。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;那什么是HTML5&lt;span style="font-family: 宋体;"&gt;呢？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;HTML&amp;nbsp;5草案的前身名为Web&amp;nbsp;Applications&amp;nbsp;1.0，是在&lt;a href="http://zh.wikipedia.org/wiki/2004年"&gt;2004年&lt;/a&gt;由&lt;a href="http://zh.wikipedia.org/wiki/WHATWG"&gt;WHATWG&lt;/a&gt;提出，再于&lt;a href="http://zh.wikipedia.org/wiki/2007年"&gt;2007年&lt;/a&gt;获&lt;a href="http://zh.wikipedia.org/wiki/W3C"&gt;W3C&lt;/a&gt;接纳，并成立了新的HTML工作团队。在&lt;a href="http://zh.wikipedia.org/wiki/2008年"&gt;2008年&lt;/a&gt;&lt;a href="http://zh.wikipedia.org/wiki/1月22日"&gt;1月22日&lt;/a&gt;，第一份正式草案发布。WHATWG表示该规范是目前仍在进行的工作，仍须多年的努力。目前&lt;a href="http://zh.wikipedia.org/wiki/Firefox"&gt;Firefox&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/Google_Chrome"&gt;Google&amp;nbsp;Chrome&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/Opera"&gt;Opera&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/Safari"&gt;Safari&lt;/a&gt;（版本4以上）、&lt;a href="http://zh.wikipedia.org/wiki/Internet_Explorer_9"&gt;Internet&amp;nbsp;Explorer&amp;nbsp;9&lt;/a&gt;已支援HTML5技术。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;HTML5本质并没有对之前HTML4版本的规范进行彻底的变革，更令人欣喜的是，HTML5一开始设计就考虑了跟之前的标准进行兼容。而且把最新的WEB开发的一些新技术新的规范引入进了新版本的标准中。那么它的本质是什么呢？其实HTML5的发展就是html，css，jsapi的发展，用另外一句话解释就是：HTML5=HTML+CSS+JSAPI。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;HTML5&lt;span style="font-family: 宋体;"&gt;带给我们的是什么呢？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&lt;strong&gt;1、让Web再次回归到富客户端地步，而且更加的独立，减少了对第三方插件的依赖。&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;比如：之前的HTML4的标准中并没有对于视频、音频以及其他的富客户端技术支持的非常好，这就使得Flash和SilverLight变得异常的成功。而在HTML5新标准中原生的就支持音频、视频、画布等技术。让我们的WEB程序拥有更多富客户端表现的方式，而且让我们的WEB程序更加独立，更好的适应多种形式的客户端。&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;2、对本地离线存储的更好的支持&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;由于之前想在客户端保存一些数据都是由&amp;nbsp;cookie&amp;nbsp;完成的。但是&amp;nbsp;cookie&amp;nbsp;不适合大量数据的存储，因为它们由每个对服务器的请求来传递，这使得&amp;nbsp;cookie&amp;nbsp;速度很慢而且效率也不高。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;HTML5&amp;nbsp;提供了两种在客户端存储数据的新方法：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;localStorage&amp;nbsp;-&amp;nbsp;没有时间限制的数据存储&lt;/li&gt;&lt;li&gt;sessionStorage&amp;nbsp;-&amp;nbsp;针对一个&amp;nbsp;session&amp;nbsp;的数据存储&lt;/li&gt;&lt;/ul&gt;&lt;p class="p0"&gt;在&amp;nbsp;HTML5&amp;nbsp;中，数据不是由每个服务器请求传递的，而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。&lt;/p&gt;&lt;p class="p0"&gt;对于不同的网站，数据存储于不同的区域，并且一个网站只能访问其自身的数据。&lt;/p&gt;&lt;p class="p0"&gt;HTML5&amp;nbsp;使用&amp;nbsp;JavaScript&amp;nbsp;来存储和访问数据。有了本地数据库的支持，让一些简单的离线应用也成为了可能。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;3、新的特殊内容元素，更好的支持SEO以及方便视障人士使用&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;现在所有的站点基本上都是Div+CSS布局，几乎所有的文章标题、内容、辅助介绍等都用Div容器来承载。搜索引擎在抓取页面内容时，因为没有明确的容器的含义只能去猜测这些标签容器承载的是文章标题还是文章内容等，HTML5新标准中直接添加了拥有具体含义的HTML标签比如：article、footer、header、nav、section&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;4、更加智能的表单标签&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;之前的表单标签，仅仅是简单的类型的约束，比如文本框、文本域、下拉列表等，而跟业务结合紧密的表单标签数据校验等控制都没有很好的支持，而是用这些技术都基本上都是跟第三方的JS控件进行结合使用，但是这些第三方总会涉及到版本控制、浏览器兼容性、非标准等一系列的问题，而在HTML5的标准中直接添加了智能表单，让这一切都变得那么的简单，比如&amp;nbsp;calendar、date、time、email、url、search。&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;5、HTML5即时二维绘图&amp;nbsp;,也就是画布的引入，让Javascript子弹飞&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;画布的引入使得：Web端生成动画效果、制作Web游戏、更好的交互体验设计都增加了无限的变数，当社区充斥着乱七八糟超炫的HTML5的JS控制的效果的时候，让人无限的赞叹。HTML5&amp;nbsp;的canvas&amp;nbsp;元素使用JavaScript&amp;nbsp;在网页上绘制图像。画布是一个矩形区域，您可以控制其每一像素。&lt;/p&gt;&lt;p class="p0"&gt;canvas&amp;nbsp;拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;6、JS嗑药了，支持多线程&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;在不影响UI&amp;nbsp;update&amp;nbsp;及&amp;nbsp;浏览器与用户交互的情况下,&amp;nbsp;前端做大规模运算，只能通过&amp;nbsp;setTimeout&amp;nbsp;之类的去模拟多线程&amp;nbsp;。而新的标准中，JS新增的&lt;a href="http://www.cnblogs.com/_franky/archive/2010/11/23/1885773.html"&gt;HTML5&amp;nbsp;Web&amp;nbsp;Worker&lt;/a&gt;对象原生的就支持多线程。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;7、WebSockets让跨域请求、长连接、数据推送等一切都变得那么简单，Web不仅仅是Ajax&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; WebSockets是在一个(TCP)接口进行双向通信的技术，PUSH技术类型。WebSocket是html5规范新引入的功能，用于解决浏览器与后台服务器双向通讯的问题，使用WebSocket技术，后台可以随时向前端推送消息，以保证前后台状态统一，在传统的无状态HTTP协议中，这是&amp;ldquo;无法做到&amp;rdquo;的。&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;8、更好的异常处理&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; HTML5(text/html)浏览器将在错误语法的处理上更加灵活。HTML5在设计时保证旧的浏览器能够安全地忽略掉新的HTML5代码。与HTML4.01相比，HTML5给出了解析的完整规则，让不同的浏览器即使在发生语法错误时也能返回完全相同的结果。&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;9、文件API让文件上传和操纵文件变得那么简单&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 由于项目中经常遇到用Web应用中控制操作本地文件，而之前都是使用一些富客户端技术比如flash，ActiveX，Silverlight等技术，面对文件JS就是个shit，就是个鸡肋。在HTML5的新的提供的FHTML5&amp;nbsp;File&amp;nbsp;API&amp;nbsp;让JS可以轻松上阵了。&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;10、编辑、拖放、微数据、浏览历史管理、地理信息接口API、设备硬件操作API等很多的新功....&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;HTML5&lt;span style="font-family: 宋体;"&gt;的未来？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;当然HTML5不是孤立的，Javascript&amp;nbsp;API的增强，让JS变成异常强大的未来的编程武器。CSS3带给未来Web应用也是极大的新的挑战。相信由于HTML5标准化的支持，相信未来Web技术真正的可以跑在任何的端，也让我们的Web应用更加的独立，更加的轻松的融入到各个端中，HTML5&amp;nbsp;就是未来！&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 通过上面HTML5的新特点，不难总结出HTML5=Javascript+HTML+CSS。HTML5的新特性带给开发者的是更友好更丰富的本地处理的API，更智能的更优雅的HTML标签，更强的本地处理的功能，通信也进一步加强。Google很早之前就意识到了，客户只要拥有一个浏览器就可以了，相信不久的将来现在的Web的应用不在对本地处理那么鸡肋，CS形式的客户端相信也会越来越少。&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 作为开发者，当Adobe公司宣布放弃Flash，把最大的精力放到HTML5的开发上的时候，那你可能会看到这些趋势，当微软选择了HTML5而放弃了Silverlight继续升级的时候，那你基本上也没有什么好选择的了。HTML5的发力，的确带给我们每个开发者都带来了机会。&lt;/p&gt;&lt;p class="p0"&gt;当然以上只是笔者的观点，每个人都有阅读新技术的角度，欢迎大家转载讨论。&lt;/p&gt;&lt;p class="p0"&gt;我参与的厚德IT团队也同步更新，希望大家关注。（&lt;a href="http://www.cnblogs.com/houodeit/archive/2012/05/22/2513655.html"&gt;厚德IT专注于IT最新技术分享&lt;/a&gt;）&lt;/p&gt;&lt;p class="p0"&gt;此文章在另外一个blog同步：&lt;a href="http://www.cnblogs.com/houodeit/archive/2012/05/22/2513655.html"&gt;http://www.cnblogs.com/houodeit/archive/2012/05/22/2513655.html&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2513716.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2012/05/22/2513716.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2012/01/02/2309787.html</id><title type="text">再见2011，2012不是梦</title><summary type="text">2011算是比较平静的一年，但是发生的事情却一点也不平静，农历新年也即将到来了，就在新年的第一天夜晚做个简单的总结，也算是对上一年自己的表现画个句号。2011经历了最穷困潦倒的日子，依然记得年初那会为了还信用卡口袋拮据的日子，幸好苦尽甘来，现在终于富余点了，再不用为吃饭的钱头疼了。2011改变了很多，Asp.Net 的核心了解更深入了，Asp.Net MVC源码也基本上通读了一下，前端的一些趋势也大体了解了一下，虽然前端的技术经验上还是差点，但是理念和基本概念还是非常棒的，新年里一定要在经验上好好下苦工，多做点项目练练手。2011用一周时间读了《CLR Via C#》第三版的前13章，新年里继</summary><published>2012-01-02T01:11:00Z</published><updated>2012-01-02T01:11:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2012/01/02/2309787.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2012/01/02/2309787.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;算是比较平静的一年，但是发生的事情却一点也不平静，农历新年也即将到来了，就在新年的第一天夜晚做个简单的总结，也算是对上一年自己的表现画个句号。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;经历了最穷困潦倒的日子，依然记得年初那会为了还信用卡口袋拮据的日子，幸好苦尽甘来，现在终于富余点了，再不用为吃饭的钱头疼了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 18pt;"&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;改变了很多，Asp.Net 的核心了解更深入了，Asp.Net MVC源码也基本上通读了一下，前端的一些趋势也大体了解了一下，虽然前端的技术经验上还是差点，但是理念和基本概念还是非常棒的，新年里一定要在经验上好好下苦工，多做点项目练练手。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;用一周时间读了《CLR Via C#》第三版的前13章，新年里继续完成后续部分的阅读，真是一本好书！对于Net底层还是很好的阐述。对于内存管理还有很多疑惑的地方都给了一次醍醐灌顶的浇灌。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;了解了极限编程，体验了敏捷开发。实际参与了一个算是互联网项目的开发。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;了解了互联网开发的相关技术，学会了Windows下的集群相关技术并部署实践之，了解了SqlServer的发布订阅机制，并实践了数据库集群的读写分离，主从配合的方案，并一直考虑SqlServer的多主库，多从库的方案，今年一定相个办法把这个方案搞定并实践之...&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;真正搞懂了什么是SOA，从之前的面向组件化的编程思想水平提高到了面向服务的层次，也算是一个不小的进步。而关于SOA的实践总结了很多经验，尤其是多系统，复杂性的服务高并发事务的处理这真是一个难得的优化经验，淘宝关于这方面的 处理真是让人赞叹。更加深入的了解的ACID，不仅仅是大学里学的理论知识，而是实践出真知啊。而关于集群化部署SOA服务，统一管理配置和服务版本控制、服务状态、服务器状态监控等都有了一些想法和实践的沉淀，这也算很好的经验，后面多多总结和跟大家分享一下。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;更加深入的了解了Entity Frameword的机制，并做了很多关于EF优化的实践，也算是对EF使用比较了解了。新年里一定要自己实现一个简单的ORM框架，另外就是有时间扩展一下EF的二级缓存。另外就是实现一个对于MongoDB数据查询和操作的Linq Provider。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;SqlServer更加的熟悉，关于索引有了更深入的了解和认识，实践了主从数据库方案，水平分库，垂直分库，实践了读写分离，实践了主库去索引，去外键优化，降低读表的锁级别到行...等等一系列的数据库优化实践真的让我更加相信自己。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;缓存从单机缓存认识，提高到了分布式缓存，并且从微软的解决方案到memcache再到Redis。从简单的key-value到Redis提供的高级的数据结构队列、栈等，缓存读写速度很快，另外分布式缓存本身就解决了高并发 的多线程安全的问题，另外就是利用它解决了集群服务器间共享用户数据，共享Session免去了多集群服务器数据同步的问题，另外就是怎样好好利用缓存将数据库压力解放，让应用压在缓存上而不是数据库，减少IO的读写。从简单的缓存认识提高到了一个新的层次。谢谢周，是你让这一切都那么美好。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;高并发数据访问表之死锁解决，这个问题很多人都会遇到，那我们怎么解决的呢：让高并发的数据库访问放入到一个内存队列中比如Redis提供的内存队列，然后定时的批量将sql交给数据库，减少了应用跟数据库的交互次数，提高了数据库io的效率，降低了应用对数据库的压力依赖。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;高并发访问IIS配置优化，很感谢dudu，他的总结很好，也是按照他的配置，让我们Web站点顺利的通过了大量用户访问连接数限制的问题，而且IIS的输出缓存，页面Gzip压缩输出、页面静态化、Url的SEO等也有很多实践，真的今年收获挺好...&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;第一次实践了OAuth协议下的新浪微博平台的开发，体验了QQ+平台的开发，开放式平台未来还是会很成功的，这里机会很多，我能否抓住呢。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;研究和实践了一把微软的Windows Media Service流媒体技术，从后台部署搭建，到前后台开发出demo感觉挺好的，但是性能太差，接触了几个E-Learning的厂商也基本上这么做的，感觉技术好落后啊。后来研究了微软的IIS7+Silverlight提供的流媒体方案的确很适合我们的在线学习系统，我出了一套方案，并做了很多预研的工作，最后出了demo，写了一个silverlight视频转码的工具，同事也搞了一个前端的播放器，感觉一套方案挺好的，不仅支持根据网络用户的带宽自己选择合适的视频清新度的格式下载，而且播放器是跨浏览器的，而且播放器是silverlight写的，体验很好。微软官网上很多视频都是这么搞的，所以实践这套东西要比微软早期的Windows Media Service要高级的多了，这个也算是比较有成就感吧！&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;代码生成技术的确在开发中已经是起到了很重要的作用，而VS的Addin插件技术以及结合T4模板代码生成技术帮助我们生成相应的代码生成工具、生成规范的架构代码是如此的神器。对于这个使用和研究也是非常好的经验，从模型设计到uml序列图设计，再从uml序列图【时序图】生成接口，这个工具制作虽然代码不是很多，但是自动化的实现，的确让开发人员和设计人员非常欣喜....&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;领域驱动的研究和实践的确进入了自己日常开发和思考中，领域驱动的实践还需要继续的学习和体悟。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;让我认识了什么叫牛逼的测试，我们的测试人员直接告诉开发的人员哪一行代码必须优化，有些情况还告诉你怎么改！哇塞这牛啊！牛逼的测试得特别懂业务，另外对开发的方式，以及一些好的开发经验都得掌握，而我就彻底的认识了这么几个测试人员，真是感谢他们....也是今年才认识了什么是真正的压力测试，LR真是神器，之前我还给他们写了个自动化压力测试工具，感觉那个真是菜，LR和VS自带的压力测试都非常不错，这个实践还是蛮不错的经验，后面的项目都实践之，另外我也会写LR的测试脚本了，今年就可以不用依赖压力测试人员了，我可以写出自己定制的优化的压力测试脚本了哈哈。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;MongoDB的深入研究还是需要进一步实践和学习，对于MongoDB大数据量还是有点担心，但是从一开始抵触新东西，到接受和喜欢，还是给自己一个很好的视野扩展的机会。新年里一定要把源码简单过一下，大体了解一下，至少出问题时，可以自己修改.这是坚决的任务。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;WCf今年用的是最多的一年，所有的开发都与之息息相关，但是不曾对他进行详细深入的研究，只是会用，还不了解他的内部机制，对于他的优化还有很多事情要做，今年深入了解一下WCF的内部架构以及学习一些最佳实践，还有就是WCF的寄宿管理和服务在线升级的处理还是要想一个很好的方案，wcf服务健康监控和在线服务管理还是很有挑战的事情。再有他的那套日志记录真是恶心，以后想办法看看重写一些他记录日志的那个类。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;日志处理，Log4Net很强大，但是很复杂，NLog很小，很轻量级，而且可以灵活扩展重写。日志优化还是很有说头的，日志先写入内存队列，然后内存队列批量写入MongoDB,再有就是日志记录异步化等一些尝试都让我们日志处理不再拖累业务，感觉好爽的一个进步。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;接触了简单的Android和WP7的开发，虽然跟IOS的同志配合过项目，但是对于IOS还是有抵触，对于Android和WP7还是最亲近和最喜欢的，新年里一定多研究一下这个东西，移动互联网未来的未来，这个池子足够大，足够我们很多人在这里面钓到足够多的鱼....&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;尝试了ubuntu,并且尝试了Linux下的C开发，这个作为一个兴趣爱好吧，不要把自己局限在.Net平台，而且后面要继续了解Mono在各个平台的情况，开放自己的思维，不要局限在某个平台，多吸取各个平台的优势，你会成为更出色的开发人员。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;尝试着读史记等文学作品，但是心静不下来，也不感兴趣没办法。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;开始写微博，最近才了解到了微博力量竟然如此之大，微博的世界竟然是如此的神奇，开始喜欢QQ空间，关闭了人人。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;让我变得更加从整体去考虑事情，从整个应用层面去考虑技术实现方案，并放手去实验实践。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;结束了4年的爱情长跑，终于又重获自由之身，期冀新年里能找到爱我的伴。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;悲催的公司，估计没有年终奖，而且11月的绩效也没发，期冀新年有个好收入。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;没有把自己的朋友好好维护好，跟大家交流的也不很多，今年一定做个大家交流的论坛或者blog跟大家有个单独的沟通的地方。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;年里，吃喝的最多，认识的朋友最多，感谢老李，感谢老程，感谢管，感谢秦，感谢辉辉，感谢周，感谢费，感谢孔、刘，感谢....感谢所有人，是你们陪我走过了平静的&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;，祝福你们新年顺畅。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/strong&gt;&lt;span style="font-size: 14px;"&gt;篮球打了不少，球技也算有所提升，乒乓球也算进一步得到了提升，2012要继续锻炼身体，革命的本钱要挣回来。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;&lt;strong&gt;2011&lt;/strong&gt;&lt;/span&gt;翻过去了，2012来了，新年里我将更加努力，对自己更加严格要求，期冀一个美好的年头...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2309787.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2012/01/02/2309787.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html</id><title type="text">Asp.Net MVC3 简单入门第一季（五） 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点</title><summary type="text">引子本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子，主要使用的是Asp.Net MVC提供的区域的功能。Asp.Net MVC提供了区域的功能，可以很方便的为大型的网站划分区域。可以让我们的项目不至于太复杂而导致管理混乱，有了区域后，每个模块的页面都放入相应的区域内进行管理很方便。而随着项目的复杂，每个开发人员开发的模块呢也可能是一个完整的解决方案，而他要开发的UI项目呢只是主站点项目的一个区域，而如果把所有的UI项目放到一个UI项目，在团队开发时就不很方便了，而我们想达到的效果是：每个模块都对应一个UI项目【这里指Asp.Net MVC项目】，最后部署的时候将</summary><published>2011-10-12T15:53:00Z</published><updated>2011-10-12T15:53:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html"/><content type="html">&lt;div style="background-color: gray;"&gt;&lt;h1 style="text-align: left;"&gt;&lt;span style="color: #ffffff;"&gt;引子&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子，主要使用的是Asp.Net MVC提供的区域的功能。&lt;/p&gt;&lt;p&gt;Asp.Net MVC提供了区域的功能，可以很方便的为大型的网站划分区域。可以让我们的项目不至于太复杂而导致管理混乱，有了区域后，每个模块的页面都放入相应的区域内进行管理很方便。而随着项目的复杂，每个开发人员开发的模块呢也可能是一个完整的解决方案，而他要开发的UI项目呢只是主站点项目的一个区域，而如果把所有的UI项目放到一个UI项目，在团队开发时就不很方便了，而我们想达到的效果是：每个模块都对应一个UI项目【这里指Asp.Net MVC项目】，最后部署的时候将子项目都配置成区域，而总的项目就是一个站点。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ffffff;"&gt;一、项目创建&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;首先创建一个主Asp.Net MVC项目，然后创建一个子Asp。Net MVC项目。项目的结构如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101222282950.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;注：&lt;/p&gt;&lt;p&gt;1、AreasDemo【子项目，作为主项目的一个Area】、MvcAppMain【主Web项目】都是普通的Asp.Net MVC3项目&lt;/p&gt;&lt;p&gt;2、MVCControllers是一个类库项目&lt;/p&gt;&lt;p&gt;3、补充：Asp.Net MVC的控制器：Controller是可以放到站点的任何DLL中的，它在搜索控制器时，会搜索站点下的所有DLL，当类符合条件：不是静态类，类名以Controller结尾，实现了Controller基类【其实最主要是IController接口】的条件时它就会被识别为控制器。所以我们可以把控制器放到任何的其他项目中，只有将此控制器所在的DLL拷贝到、主站点的Bin目录或者对应的DLL目录就可以了。当然也可以放在默认的Web项目中的Controller文件夹下。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ffffff;"&gt;二、添加测试的Controller和Action&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;在子区域Web项目AreasDemo项目中添加一个Action，然后添加一个对应的视图&lt;/p&gt;&lt;p&gt;在主Web项目MvcAppMain中添加一个HomeController和相应的Index.cshtml视图文件。&lt;/p&gt;&lt;p&gt;在MVCAppMain项目中添加一个Admin区域，做测试使用。&lt;/p&gt;&lt;p&gt;项目最终截图为：&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-top: 2px; vertical-align: top;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101222400662.png" alt="" /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101222401389.png" alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;我们看到，在主站点里添加了一个Admin区域后，默认创建了一个Areas文件夹，而且内部就是存放区域项目的页面。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ffffff;"&gt;三、在子项目中添加Areas Registration类&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;打开AreasDemo项目，添加一个AreasDemoRegistration类文件，其代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; AreasDemoRegistration : AreaRegistration&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;在主站点注册区域&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; AreaName&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;AreasDemo&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; RegisterArea(AreaRegistrationContext context)&lt;br /&gt;    {&lt;br /&gt;        context.MapRoute(&lt;br /&gt;            &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;AreasDemo_default&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;路由名字，必须唯一&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;AreasDemo/{controller}/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;路由规则&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; { action = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, id = UrlParameter.Optional }&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;默认值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        );&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;其实就是一个普通的类，它实现了AreaRegistration基类。然后我们注册区域路由就会在Global.asax的Application_Start事件方法中去执行注册到主站点的路由表中。具体&lt;/p&gt;&lt;p&gt;可以参考Global.asax中红色代码部分：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Application_Start()&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: #ff0000;"&gt;&lt;strong&gt; AreaRegistration.RegisterAllAreas();&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;注册所有区域&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    RegisterGlobalFilters(GlobalFilters.Filters);&lt;br /&gt;    RegisterRoutes(RouteTable.Routes);&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;至此我们基本的测试的基础工作都做好了，下面就是到了部署阶段了。&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ffffff;"&gt;四、部署我们的项目&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;首先，我们需要将子项目的引用到主项目中。然后我们发布主项目到一个磁盘文件夹。然后，将子项目AreasDemo的Views文件夹拷贝到主项目发布后的文件夹对应的Areas\AreasDemo文件夹下。其中AreasDemo是areaname,此文件夹需要我们自己手动创建。然后，观察发布后的bin目录下有没有AreasDemo.dll动态链接库【Web子项目】。&lt;/p&gt;&lt;p&gt;然后，我们将此文件夹发布为IIS里的一个网站。最终演示效果为：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101223225079.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;注：这是默认主Web的inde页面&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101223225873.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;注：这是主站点里添加的Admin区域&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101223230780.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;注：这是子项目action请求返回的页面&lt;/p&gt;&lt;div style="background-color: gray;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ffffff;"&gt;总结&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;我们是通过Asp.Net MVC的区域的功能实现了将多个Asp.Net MVC的项目部署的了一个IIS的站点中，这样就可以让我们多个人一块开发的不用局限在一个Web项目中了。可能文章说的不够详尽，请参下载我本文中提到的源码和部署的站点文件夹，做为参考。&lt;/p&gt;&lt;p&gt;赶紧体验一下吧....&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/fly_dragon/%E4%B8%8D%E5%90%8CMVC%E9%A1%B9%E7%9B%AE%E9%80%9A%E8%BF%87%E5%8C%BA%E5%9F%9F%E8%9E%8D%E5%90%88%E6%88%90%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AEdemo.zip"&gt;下载：关于此文中的源码，以及部署Web站点的文件夹&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html"&gt;转载请注明出处，谢谢。&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季 【索引贴】&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="clear" style="clear: both; padding: 0px; margin: 0px;"&gt;&lt;/div&gt;&lt;div class="postBody" style="font-size: 14px; line-height: 1.5; padding: 0px; margin: 0px;"&gt;&lt;div id="cnblogs_post_body" style="padding: 0px; margin: 0px;"&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/09/26/1836169.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;初识Asp.Net MVC2.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/01/25/1944298.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;初识Asp.Net MVC2.0【续】&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-size: 13px; padding: 0px; margin: 0px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/09/1846556.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC2.0 Url 路由入门---实例篇&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC2.0 Url 路由入门&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_4" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2078648.html" style="text-decoration: none; color: #9cba39; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（一）环境准备&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_3" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2079276.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（二）详解Asp.Net MVC3项目&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（三）详解Controller之Filter&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（四）详解Request Processing Pipeline&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2209438.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html</id><title type="text">Asp.Net MVC3 简单入门第一季 【索引贴】</title><summary type="text">初识Asp.Net MVC2.0初识Asp.Net MVC2.0【续】Asp.Net MVC2.0 Url 路由入门---实例篇Asp.Net MVC2.0 Url 路由入门Asp.Net MVC3 简单入门第一季（一）环境准备Asp.Net MVC3 简单入门第一季（二）详解Asp.Net MVC3项目Asp.Net MVC3 简单入门第一季（三）详解Controller之FilterAsp.Net MVC3 简单入门第一季（四）详解Request Processing PipelineAsp.Net MVC3 简单入门第一季（五） 通过Asp.Net MVC的区域功能实现将多个MVC项目部</summary><published>2011-10-11T16:58:00Z</published><updated>2011-10-11T16:58:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html"/><content type="html">&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/09/26/1836169.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;初识Asp.Net MVC2.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/01/25/1944298.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;初识Asp.Net MVC2.0【续】&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-size: 13px; line-height: 24px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/09/1846556.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC2.0 Url 路由入门---实例篇&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC2.0 Url 路由入门&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_4" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2078648.html" style="text-decoration: none; color: #9cba39; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（一）环境准备&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_3" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2079276.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（二）详解Asp.Net MVC3项目&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（三）详解Controller之Filter&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html" style="text-decoration: none; color: #399ab2; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（四）详解Request Processing Pipeline&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html" style="text-decoration: none; color: #9cba39; padding: 0px; margin: 0px;"&gt;Asp.Net MVC3 简单入门第一季（五） 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-weight: bold; line-height: 24px;"&gt;持续更新中，请继续关注&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2208042.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2208042.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html</id><title type="text">Asp.Net MVC3 简单入门第一季（四）详解Request Processing Pipeline</title><summary type="text">引子 很久没更新了，今天写点关于Asp.Net MVC的PipeLine。首先我们确认一点，Asp.Net WebFrom和Asp.Net MVC是在.Net平台下的两种web开发方式。其实他们都是基于Asp.Net Core的不同表现而已。看下面一张图，我们就能理解了WebForm和Asp.Net MVC的一个关系了。那好我们了解了Asp.Net平台下的两种开发方式，相信大家对于WebForm的...</summary><published>2011-10-11T16:52:00Z</published><updated>2011-10-11T16:52:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html"/><content type="html">&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;引子&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 很久没更新了，今天写点关于Asp.Net MVC的PipeLine。首先我们确认一点，Asp.Net WebFrom和Asp.Net MVC是在.Net平台下的两种web开发方式。其实他们都是基于Asp.Net Core的不同表现而已。看下面一张图，我们就能理解了WebForm和Asp.Net MVC的一个关系了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101122362235.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;那好我们了解了Asp.Net平台下的两种开发方式，相信大家对于WebForm的Pipeline都非常熟悉了，当然这也是你熟悉Asp.Net开发的必经之路。而看了很多关于Asp.Net MVC的资料很少有把整个Pipeline讲的非常清楚的。我暂时将自己浅陋的整理和理解总结如下，欢迎高手拍砖！&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第一阶段：客户端请求&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;客户端通过浏览器、其他软件、自己编写WebClinet、模拟HttpRequest等方法来请求一个URL。当然在Asp.Net WebFrom下，所有的请求都是归结到Handler上，普通的Aspx、Ascx等都是继承自IHttpHandler接口的一些实例，所以我总结出来：WebFrom下所有的请求都是请求的Handler【不考虑Url重写】。而做Asp.Net MVC的项目呢，所有的请求是都归结到Action上，Url应该是直接请求Action。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;客户端发出请求后，此请求就会通过网络发出，可能经过多个路由、还可能经过域名解析等等....&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;可能请求的是一个集群IP或者单个服务器，但是最终肯定只能由一台Web服务器的来处理此次请求。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第二阶段：IIS Web服务器&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 当一个请求到达IIS服务器后，Windows系统的内核模块&amp;nbsp;HTTP.SYS就能监听到此次请求，并将此次请求的URL、IP以及端口等信息解析出来并将此请求交给注册的应用来处理：也就是IIS的站点。请求此时就到达了IIS，IIS【此处仅代表IIS6.0版本】就会去检查此次请求的URL的后缀并将相应的请求交给配置的处理后缀相应的isapi。如果是.aspx或者ascx等直接交给默认设置了此处理项的AspNet_isapi.dll来处理，如果我们想处理Asp.Net MVC的请求的话，我们需要在IIS里面设置处理*.*请求交给AspNet_isapi.dll来处理，才能将一个普通的MVC请求的URL：Http://localhost/DemoController/DemoAction交给AspNet_Isapi.dll来处理。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第三阶段：Asp.Net 运行时&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;此时请求到AspNet_Isapi.dll后，它负责启动Asp.Net RunTime【如过启动了，直接将请求交给RunTime】。Asp.Net 运行时【HttpRuntime】此时会初始化一下HttpContext上下文，并从&lt;/span&gt;&lt;span style="font-size: 16px;"&gt;HttpApplicationFactory&lt;/span&gt;&lt;span style="font-size: 16px;"&gt;去创建一个HttpApplication对象，并将HttpContext赋值给HttpApplication，此后HttpContext的信息就会一直在管道内往下传递。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;HttpApplication对象开始初始化WebConfig文件中注册的IHttpModule，请求带着请求信息【HttpContext】随着管道流过多个HttpModule【一般可以做为权限校验、行为记录、日志等等，就是在到达Handler之前我们都可以直接处理此次Http请求，甚至可以重写URL】，当然也会经过我们注册的一些自定义的IHttpModule，在.Net 4.0的machine &amp;nbsp;的config文件中默认配置了一个URLRouteModule，这个也就是我们普通的Asp.Net MVC项目中的路由DLL引用【System.Web.Routing】内部的一个实现了IHttpModule接口的实例类。请求最终流向了路由组件。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第四阶段：Routing组件&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;如果你用的是MVC 2+ .NET 3.5，则你会在你的web项目中发现UrlRoutingModule就配置在你的Web.Config。.NET 4却是在.Net的默认配置文件中配置的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;UrlRoutingModule做了这么几个工作：首先他会拿着你的请求到路由表中去匹配相应的路由规则。而路由表规则的定义是在HttpApplication初始化的时候由静态方法执行的，且看一个普通的Asp.Net MVC项目的Global.asax&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MvcApplication : System.Web.HttpApplication&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; RegisterGlobalFilters(GlobalFilterCollection filters)&lt;br /&gt;        {&lt;br /&gt;            filters.Add(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; HandleErrorAttribute());&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; RegisterRoutes(RouteCollection routes)&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;定义路由表规则&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        {&lt;br /&gt;            routes.IgnoreRoute(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{resource}.axd/{*pathInfo}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;            routes.MapRoute(&lt;br /&gt;                &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Default&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 路由名称&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{controller}/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 带有参数的 URL&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; { controller = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Home&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, action = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, id = UrlParameter.Optional } &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 参数默认值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            );&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Application_Start()&lt;br /&gt;        {&lt;br /&gt;            AreaRegistration.RegisterAllAreas();&lt;br /&gt;            RegisterGlobalFilters(GlobalFilters.Filters);&lt;br /&gt;            RegisterRoutes(RouteTable.Routes);&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;注册路由表&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;    }&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;而路由表的规则的注册是在 Application_Start()&amp;nbsp;方法内部，那此时请求在URLRouteModule内部到路由表中的所有规则进行匹配，并把匹配的Controller的信息和Action的信息以及RouteData等信息都解析处理，然后将请求进一步交给：实现了&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;IRouteHandler【实现了IHttpHandler接口】 的一个实例，下面是&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;IRouteHandler的源码：&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; System.Web.Routing&lt;br /&gt;{  &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;interface&lt;/span&gt; IRouteHandler&lt;br /&gt;    {       &lt;br /&gt;        IHttpHandler GetHttpHandler(RequestContext requestContext);&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;如果你想自己来实现这个接口然后在Web.Config中配置一下，那么请求就到了你自己的自定义的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;RouteHandler来执行后续的请求处理操作了。如果你使用的是默认的配置，那么请求会传递到&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;MvcRouteHandler，那么请求f附加着HttpContext就会到达Asp.Net MVC的处理中了。&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第五阶段：MvcRouteHandler创建Controller&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;请求到此，其实跟WebForm都是一致的，而后面才出现了一些不同，此时请求才真正的进入System.Web.Mvc控制的领域内。后面所有的东西我们都可以直接通过源码来介绍了，而上面的所有的请求处理只能通过反射等方式来看或者学习，而后面的内容，我们可以幸福的直接看源码了。那就跟我走进它的管道怎么流动的吧...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;接着上面讲，请求到了&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;MvcRouteHandler类，而此类的源码如下：&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; System.Web.Mvc&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Web.Routing;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Web.SessionState;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MvcRouteHandler : IRouteHandler&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; IControllerFactory _controllerFactory;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MvcRouteHandler()&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MvcRouteHandler(IControllerFactory controllerFactory)&lt;br /&gt;        {&lt;br /&gt;            _controllerFactory = controllerFactory;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; IHttpHandler GetHttpHandler(RequestContext requestContext)//实现了IRouteHandler的方法，URLRouteModule调用&lt;br /&gt;        {&lt;br /&gt;            requestContext.HttpContext.SetSessionStateBehavior(GetSessionStateBehavior(requestContext));&lt;br /&gt;            &lt;span style="color: #ff0000;"&gt;&lt;strong&gt;return new MvcHandler(requestContext);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;        .....&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span style="font-family: Georgia; color: #333333;" lang="EN-US"&gt;MvcRouteHandler的&lt;/span&gt;&lt;/strong&gt;GetHttpHandler方法被URLRouteModule调用，而看上面的红色源码部分我们看到，它将请求上下文交给了MVCHandler，并返回了MVCHandler。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;而我查看源码得知：MVCHandler实现了IHttpHandler，此时它的ProcessRequest方法被调用。且看MVCHandler的部分源代码：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState&lt;br /&gt; {&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;        protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; ProcessRequest(HttpContextBase httpContext)&lt;br /&gt;        {&lt;br /&gt;            SecurityUtil.ProcessInApplicationTrust(() =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                IController controller;//在ProcessRequestInit方法中：controller = factory.CreateController(RequestContext, controllerName);//初始化                IControllerFactory factory;//是由ProcessRequestInit方法中这行代码初始化的： factory = ControllerBuilder.GetControllerFactory();                ProcessRequestInit(httpContext, &lt;span style="color: #0000ff;"&gt;out&lt;/span&gt; controller, &lt;span style="color: #0000ff;"&gt;out&lt;/span&gt; factory);//初始化了ControllerFactory&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #ff0000;"&gt;controller.Execute(RequestContext);&lt;/span&gt;&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;finally&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    factory.ReleaseController(controller);&lt;br /&gt;                }&lt;br /&gt;            });&lt;br /&gt;        }&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;从源码中我们得知：请求交给MVCHandler后，它首先从ControllerBuilder获取到当前的实现了IControllerFactory接口的ControllerFactory【也可以自己定义相关的CustomerControllerFactory，然后在Glable中注册使用】。然后根据上下文中请求的Controller的字符串信息创建出实现了IController接口的控制器。然后调用了上面代码中红色部分，也就是controller.Execute(RequestContext);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;那此时请求就交给了controller。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第六阶段：Controller调用Action返回ActionResult&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;由于此文过长，而且时间已经到了凌晨。源码我就不贴了，简单介绍一下流程，后面再做详细赘述。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;Controller的Execute方法是在基类ControllerBase中的方法，而此方法又调用ExecuteCore方法，然后此方法内部执行如下代码：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; actionName = RouteData.GetRequiredString(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!ActionInvoker.InvokeAction(ControllerContext, actionName))&lt;br /&gt;{&lt;br /&gt;    HandleUnknownAction(actionName);&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;首先从RouteData中获取Action的名字，然后调用ActonInvoker的&lt;/span&gt;InvokeAction&lt;span style="font-size: 16px;"&gt;方法，调用Action执行。Action的返回的ActionResult的ExecuteResult(controllerContext)方法被执行，那此时就出现了分叉。如果直接返回的非ViewResult的话，那就直接协会到Respose流了返回客户端了，如果是ViewResult的话，那就进入View的领域了。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;第七阶段：View视图加载成Page类，并Render成Html&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;此时请求到ViewResult后，ExecuteResult方法被调用，且看此方法的内部实现：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; ExecuteResult(ControllerContext context)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (context == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;context&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(ViewName))&lt;br /&gt;            {&lt;br /&gt;                ViewName = context.RouteData.GetRequiredString(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            ViewEngineResult result = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (View == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                result = FindView(context);//通过视图引擎获取到ViewEngineResult ，此时模板页面【aspx】被加载成了对应的ViewPage类&lt;br /&gt;                View = result.View;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            TextWriter writer = context.HttpContext.Response.Output;&lt;br /&gt;            ViewContext viewContext = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ViewContext(context, View, ViewData, TempData, writer);&lt;br /&gt;            View.Render(viewContext, writer);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (result != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                result.ViewEngine.ReleaseView(context, View);&lt;br /&gt;            }&lt;br /&gt;        }&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;内部主要是通过ViewResult的FindView方法通过ViewEngine去加载具体的Aspx页面或者是cshtml页面生成对应的page类【针对Aspx】，然后再调用IView接口的Render方法将请求信息+ViewData的信息以等一块渲染成Html并写回到客户端。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;在此阶段我们发现IViewEngine内部的实现这是到规定路径下去加载Aspx页面生成对应的ViewPage类。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;IView接口的Render方法才是真正的去将Html和数据装配的到一块。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;自此请求结束。&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #808080;"&gt;&lt;h1 class="myH1"&gt;&lt;span style="color: #ffffff;"&gt;总结：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;客户端请求&amp;rarr;路由器&amp;rarr;IIS服务器内核模块HTTP.SYS&amp;rarr;IIS&amp;rarr;AspNet_isapi.dll&amp;rarr;Asp.Net Runtime&amp;rarr;Application&amp;rarr;IHttpModule....IHttpModule&amp;rarr;MVCRouteModule&amp;rarr;MVCRouteHandler&amp;rarr;MVCHandler&amp;rarr;ControllerFactory&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;rarr;Controller&amp;rarr;ActionInvoke&amp;rarr;Aciton&amp;rarr;ActiongResult.ExcuteReuslt()【如果是ViewResult】&amp;rarr;IViewEngine FindView&amp;rarr;IView Render&amp;rarr;Response&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 16px;"&gt;最后附两张关于此请求管道的两张图，以飨读者。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101200253188.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011101200262034.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;记于 2011年10月12日0:24:42&lt;br /&gt;转载请注明出处：&lt;a href="http://www.cnblogs.com/fly_dragon"&gt;博客园Flydragon&lt;/a&gt;：&lt;a href="http://www.cnblogs.com/fly_dragon"&gt;http://www.cnblogs.com/fly_dragon&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/09/26/1836169.html"&gt;初识Asp.Net MVC2.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/01/25/1944298.html"&gt;初识Asp.Net MVC2.0【续】&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_1" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/09/1846556.html"&gt;Asp.Net MVC2.0 Url 路由入门---实例篇&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html"&gt;Asp.Net MVC2.0 Url 路由入门&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_4" class="postTitle2" style="text-decoration: none; color: #9cba39; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2078648.html"&gt;Asp.Net MVC3 简单入门第一季（一）环境准备&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_3" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2079276.html"&gt;Asp.Net MVC3 简单入门第一季（二）详解Asp.Net MVC3项目&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html"&gt;Asp.Net MVC3 简单入门第一季（三）详解Controller之Filte&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 16px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_0" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html"&gt;Asp.Net MVC3 简单入门第一季（四）详解Request Processing Pipeline&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 11.5pt; font-family: Georgia; color: #333333;" lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2207955.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2011/06/16/2083097.html</id><title type="text">实在忍不住，【转】一篇好文章！题目：【转】想要成功，请记住！</title><summary type="text">原文链接：http://www.cnblogs.com/yanyangtian/archive/2011/03/21/1989940.html作者：小洋（燕洋天)第一次转载他人的文章，我觉得这篇文章需要让更多的人了解！所以我转载一下。一双鞋，耐克的6百多；李宁的4百多；特步的3百多；361的2百多；所以，你毕业于一个什么样的大学很重要。 一双鞋，在地摊不过几十元，到了商场、专卖店，会涨到一百甚至几百。所以，你呆在什么地方很重要。 一双鞋，只有合脚并且合意了才能卖出去。所以，沟通了解很重要。 一双鞋，少了一只，是不值钱的。所以，另一半很重要。 一双鞋，样式老的，大多很便宜。所以，更新自己的知识很</summary><published>2011-06-16T13:36:00Z</published><updated>2011-06-16T13:36:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/16/2083097.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/16/2083097.html"/><content type="html">&lt;p&gt;原文链接：&lt;a href="http://www.cnblogs.com/yanyangtian/archive/2011/03/21/1989940.html"&gt;http://www.cnblogs.com/yanyangtian/archive/2011/03/21/1989940.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://www.cnblogs.com/yanyangtian/"&gt;小洋（燕洋天)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;第一次转载他人的文章，我觉得这篇文章需要让更多的人了解！所以我转载一下。&lt;/p&gt;&lt;blockquote dir="ltr"&gt;&lt;p&gt;&lt;span&gt;一双鞋，耐克的&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;6&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;百多；李宁的&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;百多；特步的&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;百多；&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;361&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;的&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;百多；所以，你毕业于一个什么样的大学很重要。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;span face="Arial, sans-serif" style="font-family: Arial, sans-serif;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，在地摊不过几十元，到了商场、专卖店，会涨到一百甚至几百。所以，你呆在什么地方很重要。&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，只有合脚并且合意了才能卖出去。所以，沟通了解很重要。&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，少了一只，是不值钱的。所以，另一半很重要。&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，样式老的，大多很便宜。所以，更新自己的知识很重要。&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，积压多年，只能打折处理。所以，碰到合适的就结婚吧。&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;一双鞋，&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;有人&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;、&lt;/span&gt;&lt;/span&gt;&lt;span size="2" style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;span size="2" face="宋体" style="font-family: 宋体; font-size: x-small;"&gt;&lt;span&gt;年如新的，有人不到一年穿烂的。所以，有个好上司很重要&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span lang="EN-US"&gt;1&lt;/span&gt;，这是个现实的社会，感情不能当饭吃，贫穷夫妻百事哀。不要相信电影里的故事情节，那只是个供许多陌生人喧嚣情感的场所。只有不理智和不现实的人才相信&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;2&lt;/span&gt;，给自己定目标，一年，两年，五年，也许你出生不如别人好，通过努力，往往可以改变&lt;span lang="EN-US"&gt;70%&lt;/span&gt;的命运。破罐子破摔只能和懦弱做朋友。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;3&lt;/span&gt;，朋友请你吃饭，不要觉得理所当然，请礼尚往来，否则你的名声会越来越差。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;4&lt;/span&gt;，好朋友里面，一定要培养出一个知己，不要以为你有多么八面玲珑，到处是朋友，最后真心对你的，只有一个，相信我。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;5&lt;/span&gt;，不要相信算卦星座命理，那是哄小朋友的，命运掌握在自己手中。坐在家里等什么房子，车子，还不如睡一觉做个好梦。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;6&lt;/span&gt;，不喜欢的人少接触，但别在背后说坏话，说是非之人，必定是是非之人，谨记，祸从口出。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;7&lt;/span&gt;，少玩游戏，这不是韩国，你打不出房子车子还有资本。可以有爱好，但要把握尺度，少玩农场，牧场，斗地主等一些高度吸引人思想的晋级游戏，也许你的级别很高，但不代表你有多么成功，反而会影响和占据你成功的时间。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;8&lt;/span&gt;，是人都有惰性，这是与生俱来的，但是我们后天可以改变这种惰性，因为有很多人正在改变。对于某种事物或是生意不要等别人做到了，我才想到。不要等别人已经赚到钱了，我才想去做。没有人相信的是市场和机遇，大家都相信的叫做膨胀。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;9&lt;/span&gt;，知道自己要干什么，夜深人静，问问自己，将来的打算，并朝着那个方向去实现。而不是无所事事和做一些无谓的事。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;10&lt;/span&gt;，出路出路，走出去了，总是会有路的。困难苦难，困在家里就是难。《社会调查》普遍认为。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;11&lt;/span&gt;，作为女人，不要以老卖老，认为事业跟自己没关系，以为自己就是洗衣服，做饭，看孩子，那就是大错特错。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;12&lt;/span&gt;，做人，要做到；万事孝为先，教童品之道，夫妻和谐美，幸福万年长。但是这些不是拿来用嘴说说就能办到的，解放初期年代要做到这些，需要付出很大的努力和辛苦，当今现实的社会需要你付出很大的金钱，聪明的人都知道这个道理。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;13&lt;/span&gt;，空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏，读点文学作品，学习一些经营流程，管理规范，国际时事，法律常识。这能保证你在任何聚会都有谈资。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;14&lt;/span&gt;，宁可错杀一千次来自各方面的信息，也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;15&lt;/span&gt;，要做一件事，成功之前，没有必要告诉其他人。成功之后不用你说，其他人都会知道的。这就是信息时代所带来的效应&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;16&lt;/span&gt;，头发，指甲，胡子，打理好。社会是个排斥性的接受体，这个星球所需要的艺术家极其有限，请不要冒这个险，就算你留长头发比较好看，也要尽量给人干净的感觉。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;17&lt;/span&gt;，不要以为你是个男人，就不需要保养。至少饮食方面不能太随便，多吃番茄，海产品，韭菜，香蕉，都是对男性健康有益处的食物。你要是看不到价值，我可以告诉你。至少你能把看病节约下来的钱给你的女人多买几个化妆品&lt;span lang="EN-US"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;18&lt;/span&gt;，力求上进的人，不要总想着靠谁谁，人都是自私的，自己才是最靠得住的人。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;19&lt;/span&gt;，面对失败，不要太计较，天将降大任于斯人也，必先苦其心志，劳其筋骨，饿起体肤&amp;hellip;&amp;hellip;但要学会自责，找到原因，且改掉坏习惯。 二十岁没钱，那很正常；三十岁没钱，可能是没有好的家境，需要更大的努力；四十岁没钱，只能自己找原因。穷人变成富人是可能的，而且很可能。穷人能穷一辈子，也是必然的，存在就是理由，只是有所选择。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span size="3" face="宋体" style="font-family: 宋体; font-size: small;"&gt;&lt;span lang="EN-US"&gt;20&lt;/span&gt;，每个人都有成功的机会！就看你给不给自己机会！&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2083097.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/06/16/2083097.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html</id><title type="text">Asp.Net MVC3 简单入门第一季（三）详解Controller之Filter</title><summary type="text">前言前面两篇写的比较简单，刚开始写这个系列的时候我面向的对象是刚开始接触Asp.NetMVC的朋友，所以写的尽量简单。所以写的没多少技术含量。把这些技术总结出来，然后一简单的方式让更多的人很好的接受这是我一直努力的方向。后面会有稍微复杂点的项目！让我们一起期待吧！此文我将跟大家介绍一下Asp.NetMVC3Filter的一些用法。你会了解和学习到全局Fileter，ActionFilter等常用用...</summary><published>2011-06-15T00:39:00Z</published><updated>2011-06-15T00:39:00Z</updated><author><name>FlyDragon</name><uri>http://www.cnblogs.com/fly_dragon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html"/><content type="html">&lt;div class="Section0"&gt;&lt;h2 class="p0"&gt;前言&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;前面两篇写的比较简单，刚开始写这个系列的时候我面向的对象是刚开始接触&lt;span style="font-family: Verdana;"&gt;Asp&lt;/span&gt;&lt;span&gt;&lt;span style="font-family: 宋体;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Net&amp;nbsp;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的朋友，所以写的尽量简单。所以写的没多少技术含量。把这些技术总结出来，然后一简单的方式让更多的人很好的接受这是我一直努力的方向。后面会有稍微复杂点的项目！让我们一起期待吧！&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;此文我将跟大家介绍一下Asp.Net&amp;nbsp;MVC3&amp;nbsp;Filter&lt;span style="font-family: 宋体;"&gt;的一些用法。你会了解和学习到全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Fileter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&amp;nbsp;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等常用用法。&lt;/span&gt;&lt;/p&gt;&lt;h2 class="p0"&gt;第一节：&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;知识储备&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;项目大一点总会有相关的&lt;span style="font-family: Verdana;"&gt;AOP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;面向切面的组件，而&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（特指：&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Asp&lt;/span&gt;&lt;span&gt;&lt;span style="font-family: 宋体;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Net&amp;nbsp;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，以下皆同）项目中呢&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在执行前或者执行后我们想做一些特殊的操作（比如身份验证，日志，异常，行为截取等），而不想让&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;开发人员去关心和写这部分重复的代码，那我们可以通过&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;AOP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;截取实现，而在&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;项目中我们就可以直接使用它提供的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的特性帮我们解决，不用自己实现复杂的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;AOP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;了。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;Asp&lt;span style="font-family: 宋体;"&gt;.&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Net&amp;nbsp;MVC&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;提供了以下几种默认的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/p&gt;&lt;table border="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="128"&gt;&lt;p class="p0"&gt;Filter&amp;nbsp;Type&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="170"&gt;&lt;p class="p0"&gt;实现接口&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="114"&gt;&lt;p class="p0"&gt;执行时间&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="180"&gt;&lt;p class="p0"&gt;Default&amp;nbsp;Implementation&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="128"&gt;&lt;p class="p0"&gt;Authorization&amp;nbsp;filter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="170"&gt;&lt;p class="p0"&gt;IAuthorizationFilter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="114"&gt;&lt;p class="p0"&gt;在所有&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行之前执行&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="180"&gt;&lt;p class="p0"&gt;AuthorizeAttribute&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="128"&gt;&lt;p class="p0"&gt;Action&amp;nbsp;filter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="170"&gt;&lt;p class="p0"&gt;IActionFilter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="114"&gt;&lt;p class="p0"&gt;分别在&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行之前和之后执行。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="180"&gt;&lt;p class="p0"&gt;ActionFilterAttribute&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="128"&gt;&lt;p class="p0"&gt;Result&amp;nbsp;filter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="170"&gt;&lt;p class="p0"&gt;IResultFilter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="114"&gt;&lt;p class="p0"&gt;分别在&lt;span style="font-family: Verdana;"&gt;Action&amp;nbsp;Result&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行之后和之前&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="180"&gt;&lt;p class="p0"&gt;ResultFilterAttribute&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="128"&gt;&lt;p class="p0"&gt;Exception&amp;nbsp;filter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="170"&gt;&lt;p class="p0"&gt;IExceptionFilter&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="114"&gt;&lt;p class="p0"&gt;只有在filter,&lt;/p&gt;&lt;p class="p0"&gt;或者&amp;nbsp;action&amp;nbsp;method,&amp;nbsp;或者&amp;nbsp;action&amp;nbsp;result&amp;nbsp;抛出一个异常时候执行&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="180"&gt;&lt;p class="p0"&gt;HandleErrorAttribute&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class="p0"&gt;大家注意一点，Asp.Net MVC提供的ActionFilterAttribute默认实现了IActionFilter和IResultFilter。而ActionFilterAttribute是一个&lt;span style="font-family: Verdana;"&gt;Abstract&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的类型，所以不能直接使用，因为它不能实例化，所以我们想使用它必须继承一下它然后才能使用，下图所示的是&lt;/span&gt;ActionFilterAttribute的实现：&lt;/p&gt;&lt;p class="p0"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011061423370388.png" alt="" /&gt;&lt;/p&gt;&lt;p class="p0"&gt;所以我们在实现了ActionFilterAttribute，然后就可以直接重写一下父类的方法如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuted(ActionExecutedContext filterContext);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;在Action执行之后执行        &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuting(ActionExecutingContext filterContext);       &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;在Action执行前执行&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuted(ResultExecutedContext filterContext);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;在Result执行之后       &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuting(ResultExecutingContext filterContext); &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;在Result执行之前&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;然后我们就可以直接在&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Result&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行之前之后分别做一些操作。&lt;/span&gt;&lt;/p&gt;&lt;h2 class="p0"&gt;第二节：&lt;span style="font-family: Verdana;"&gt;Action&amp;nbsp;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;实战&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;光说不练假把式，那现在我们就直接做一个例子来实际演示一下。&lt;/p&gt;&lt;p class="p0"&gt;首先我们添加一个普通的类，直接上代码吧：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; DemoActionAttributeFilter : ActionFilterAttribute&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuted(ActionExecutedContext filterContext)&lt;br /&gt;    {   &lt;span&gt;//&lt;/span&gt;&lt;span&gt;在Action执行之后执行 输出到输出流中文字：After Action execute xxx&lt;/span&gt;&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;After Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnActionExecuted(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuting(ActionExecutingContext filterContext)&lt;br /&gt;    {   &lt;span&gt;//&lt;/span&gt;&lt;span&gt;在Action执行前执行&lt;/span&gt;&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Before Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnActionExecuting(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuted(ResultExecutedContext filterContext)&lt;br /&gt;    {   &lt;span&gt;//&lt;/span&gt;&lt;span&gt;在Result执行之后   &lt;/span&gt;&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;After ViewResult execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnResultExecuted(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuting(ResultExecutingContext filterContext)&lt;br /&gt;    {   &lt;span&gt;//&lt;/span&gt;&lt;span&gt;在Result执行之前&lt;/span&gt;&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Before ViewResult execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnResultExecuting(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;写完这个代码后，我们回到&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上，打上上面的标记如下所示：&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[DemoActionAttributeFilter(Message &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; ActionResult Index()&lt;br /&gt;{   //Action 执行时往输出流写点代码&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ControllerContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; Content(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Result Excut! &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;然后执行F5，页面上则会显示为：&lt;/p&gt;&lt;p class="p0"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011061423545371.png" alt="" /&gt;&lt;/p&gt;&lt;p class="p0"&gt;最终我们看到了在&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行之前和之后都执行了我们的重写的&lt;/span&gt;DemoActionAttributeFilter方法，&lt;span style="font-family: Verdana;"&gt;Result&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行前后也执行了我们的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的方法。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;总的执行顺序是：&lt;/p&gt;&lt;p class="p0"&gt;&lt;strong&gt;Action执行前：OnActionExecuting方法先执行&amp;rarr;Action执行&amp;rarr;OnActionExecuted方法执行&amp;rarr;OnResultExecuting方法执行&amp;rarr;返回的ActionRsult中的executeResult方法执行&amp;rarr;OnResultExecuted执行&lt;/strong&gt;。最终显示的效果就是如上图所示。&lt;/p&gt;&lt;p class="p0"&gt;&lt;span style="font-family: 宋体;"&gt;感觉很爽吧！呵呵！&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;如果我们将此标签打到&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的话，DemoActionAttributeFilter将作用到&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的所有的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。例如如下代码所示：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;[DemoActionAttributeFilter(Message &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;controller&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; HomeController : Controller&lt;br /&gt;{&lt;br /&gt;    [DemoActionAttributeFilter(Message &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;action&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)]&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; ActionResult Index()&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.ControllerContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; Content(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br/&amp;gt;Result Excut! &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="Section0"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="Section0"&gt;那就有个问题了我们再执行显示的页面会有什么情况呢？Controller上的Filter会执行吗？那标签的作用会执行两次吗？下面是最后的执行结果如下图所示：&lt;/div&gt;&lt;p class="p0"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011061423384356.png" alt="" /&gt;&lt;/p&gt;&lt;div class="Section0"&gt;&lt;strong&gt;结果说明：默认情况下Action&lt;span&gt;上打了&lt;/span&gt;DemoActionAttributeFilter&amp;nbsp;标签后，虽然在&lt;span&gt;Controller&lt;/span&gt;&lt;span&gt;上也打上了此标签，但它只有&lt;/span&gt;&lt;span&gt;Action&lt;/span&gt;&lt;span&gt;上的标签起作用了。&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p class="p0"&gt;Index&amp;nbsp;执行时，&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的方法只执行了一次，而某些情况下我们也想让&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;FilterAttribute&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也执行一次&lt;/span&gt;DemoActionAttributeFilter&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;那我们怎么才能让&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;[DemoActionAttributeFilter(Message&amp;nbsp;=&amp;nbsp;"controller")]也起作用呢？&lt;/p&gt;&lt;p class="p0"&gt;答案是：&lt;strong&gt;我们只需在DemoActionAttributeFilter类的定义上打上标记[AttributeUsage(AttributeTargets.All,&amp;nbsp;AllowMultiple&amp;nbsp;=&amp;nbsp;true)]即可【下面类的最上面红色字体部分】，也就是让其成为可以多次执行的Action&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;。&lt;/strong&gt;代码如下：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: #ff0000; background-color: #ffcc99;"&gt;[AttributeUsage(AttributeTargets.All, AllowMultiple = true&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: #000000;"&gt;&lt;strong&gt;&lt;span style="color: #ff0000; background-color: #ffcc99;"&gt;)]&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; DemoActionAttributeFilter : ActionFilterAttribute&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuted(ActionExecutedContext filterContext)&lt;br /&gt;    {&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;After Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnActionExecuted(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnActionExecuting(ActionExecutingContext filterContext)&lt;br /&gt;    {&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Before Action execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnActionExecuting(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuted(ResultExecutedContext filterContext)&lt;br /&gt;    {&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;After ViewResult execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnResultExecuted(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnResultExecuting(ResultExecutingContext filterContext)&lt;br /&gt;    {&lt;br /&gt;        filterContext.HttpContext.Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;br /&amp;gt;Before ViewResult execute&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\t &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; Message);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;&lt;span style="color: #000000;"&gt;.OnResultExecuting(filterContext);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="p0"&gt;然后我们执行的效果如图所示：&lt;/p&gt;&lt;p class="p0"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011061423434461.png" alt="" /&gt;&lt;/p&gt;&lt;p class="p0"&gt;我们看到的结果是&lt;strong&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;ActionFilter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;先于&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;上打的标记执行&lt;/strong&gt;。同样&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Result&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;executeResult&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方法之前也是先执行&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;标记中的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;OnResultexecuteing&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;方法。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;span style="font-family: 宋体;"&gt;最后的执行顺序是：&lt;strong&gt;Controller上的OnActionExecuting&amp;rarr;Action上的OnActionExecuting&amp;rarr;Action执行&amp;rarr;Action上的OnActionExecuted&amp;rarr;Controller上的OnActionExecuted&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;span style="font-family: 宋体;"&gt;到此Action就执行完毕了，我们看到是一个入栈出栈的顺序。后面是Action返回ActionResult后执行了ExecuteResult方法，但在执行之前要执行Filter。具体顺序为：&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;span style="font-family: 宋体;"&gt;接上面&amp;rarr;&lt;strong&gt;Controller的OnResultExecuting方法&amp;rarr;Action上的OnResultExecuting&amp;rarr;Action返回ActionResult后执行了ExecuteResult方法&amp;rarr;Action上的OnResultExecuted执行&amp;rarr;Controller上的OnResultExecuted执行&amp;rarr;结束&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 class="p0"&gt;第三节：&lt;span style="font-family: Verdana;"&gt;Gloable&amp;nbsp;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;实战&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;又接着一个问题也来了，我们想有些公共的方法需要每个Action&lt;span style="font-family: 宋体;"&gt;都执行以下，而在所有的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;打标记是很痛苦的。幸好&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Asp&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Net&amp;nbsp;MVC3&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;带来了一个美好的东西，全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。而怎么注册全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;呢？答案就在&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Global.asax&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中。让我们看以下代码，我是如何将上面我们定义的&lt;/span&gt;DemoActionAttributeFilter&amp;nbsp;注册到全局&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中。上代码：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MvcApplication : System.Web.HttpApplication&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; RegisterGlobalFilters(GlobalFilterCollection filters)&lt;br /&gt;    {&lt;br /&gt;        filters.Add(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HandleErrorAttribute());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; RegisterRoutes(RouteCollection routes)&lt;br /&gt;    {&lt;br /&gt;        routes.IgnoreRoute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{resource}.axd/{*pathInfo}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;br /&gt;        routes.MapRoute(&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Default&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Route name&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{controller}/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; URL with parameters&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; { controller &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Home&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, action &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, id &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; UrlParameter.Optional } &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Parameter defaults&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        );&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Application_Start()&lt;br /&gt;    {&lt;br /&gt;        AreaRegistration.RegisterAllAreas();&lt;br /&gt;       &lt;span style="color: #ff0000; background-color: #ffcc99;"&gt; GlobalFilters.Filters.Add(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ff0000; background-color: #ffcc99;"&gt;new DemoActionAttributeFilter() { Message = "Gloable"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;span style="color: #ff0000; background-color: #ffcc99;"&gt; });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000; background-color: #ffcc99;"&gt;        RegisterGlobalFilters(GlobalFilters.Filters);&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;        RegisterRoutes(RouteTable.Routes);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class="p0"&gt;跟普通的&lt;span style="font-family: Verdana;"&gt;MVC2.0&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Global.asax&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的区别就是红色部分的代码，我们看到代码中我将自己定义的&lt;/span&gt;DemoActionAttributeFilter的实例加入到GlobalFilters.Filters集合中，然后下面一句就是注册全局Filter&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;RegisterGlobalFilters(GlobalFilters.Filters);&lt;/p&gt;&lt;p class="p0"&gt;这样我们所有的Action&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Result&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行前后都会调用我们的&lt;/span&gt;DemoActionAttributeFilter的重写的方法。&lt;/p&gt;&lt;p class="p0"&gt;再次运行我们的demo&lt;span style="font-family: 宋体;"&gt;看到的结果是：&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/154994/2011061423443219.png" alt="" /&gt;&lt;/p&gt;&lt;p class="p0"&gt;我们看到的结果是全局的&lt;span style="font-family: 'Lucida Console';"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;首先执行，然后才是&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行，最后才是&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的标签执行。当然这是在&lt;/span&gt;DemoActionAttributeFilter类的定义上打上标记[AttributeUsage(AttributeTargets.All,&amp;nbsp;AllowMultiple&amp;nbsp;=&amp;nbsp;true)]的前提下。不然&amp;nbsp;如果Action&lt;span style="font-family: 宋体;"&gt;打上了标签跟&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的相同则&lt;/span&gt;它只会执行Action&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: 'Lucida Console';"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;h2 class="p0"&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;p class="p0"&gt;经过这一篇文章的介绍我们大体了解了Filter&lt;span style="font-family: 宋体;"&gt;的使用方法，还了解到全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的用法，尤其是当相同的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;重复作用到同一个&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上时，如果没有设置可多次执行的标签那只有&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;执行，而&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;都被屏蔽掉，但是设置可多次执行，那首先执行全局&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;其次是&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Controller&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;再次之就是&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Action&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;上的&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;Filter&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;了。&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;本文提供Word版本&lt;a href="http://files.cnblogs.com/fly_dragon/Filter%E5%AD%A6%E4%B9%A0.rar"&gt;下载&lt;/a&gt;地址：&lt;a href="http://files.cnblogs.com/fly_dragon/Filter%E5%AD%A6%E4%B9%A0.rar"&gt;http://files.cnblogs.com/fly_dragon/Filter%E5%AD%A6%E4%B9%A0.rar&lt;/a&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;记于：&lt;span style="font-family: Verdana;"&gt;2011&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;年&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;6&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;月&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;14&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;日&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;23:23:47&lt;/span&gt;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p0"&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/09/26/1836169.html"&gt;初识Asp.Net MVC2.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; font-weight: bold; color: #000000; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; font-size: 14px; line-height: 1.5; padding: 0px;"&gt;&lt;a id="ctl02_TitleUrl" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/01/25/1944298.html"&gt;初识Asp.Net MVC2.0【续】&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_1" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/09/1846556.html"&gt;Asp.Net MVC2.0 Url 路由入门---实例篇&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2010/10/08/1846009.html"&gt;Asp.Net MVC2.0 Url 路由入门&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_4" class="postTitle2" style="text-decoration: none; color: #9cba39; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2078648.html"&gt;Asp.Net MVC3 简单入门第一季（一）环境准备&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_3" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/12/2079276.html"&gt;Asp.Net MVC3 简单入门第一季（二）详解Asp.Net MVC3项目&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_2" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html"&gt;Asp.Net MVC3 简单入门第一季（三）详解Controller之Filter&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: 24px; color: #333333; font-family: verdana, ����, Arial; font-weight: bold; padding: 0px; margin: 0px;"&gt;&lt;a id="homepage1_HomePageDays_ctl00_DayList_TitleUrl_0" class="postTitle2" style="text-decoration: none; color: #399ab2; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #333333; padding: 0px; margin: 0px;" href="http://www.cnblogs.com/fly_dragon/archive/2011/10/12/AspNetMVC_Pipeline.html"&gt;Asp.Net MVC3 简单入门第一季（四）详解Request Processing Pipeline&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/fly_dragon/aggbug/2081063.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/fly_dragon/archive/2011/06/15/2081063.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
