秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)

简介:
文章回顾:
1:  秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2:  秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
5:  秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期
 
 
从上节中,我们为页面基类自定义了如下的几个生命周期:
本节,将为你详细解析秋色园QBlog在每个生命周期所处理的事情。
 
一:参数初始化:private void Page_Init(HttpContext context)
 
秋色园QBlog在第一个生命周期里,主要完成以下参数的初始化:
1:URL参数接收:即从UrlRewirte分好类后传过来的参数
2:公共类:UserLogin:从此类可获取到当前访问用户信息、被访问用户信息
3:XmlHelper:操作html文档类,能轻松加载html,并以xml方式轻松操作填充内容
4:MutilLanguage:多语言处理类,能统一翻译html文档
 
为此,基类需要定义一些常用属性,方便各个页面ashx处理程序调用。
因此,定义了如下属性,并从参数里接收:
 
这里有2点注意说明:
1:引入了 CYQ.Data:用上了CYQ.Data.Xml下的两个类XmlHelper、MutilLanguage
2:属性中没有定义UserLogin及几个URL参数:本系列主介绍原理,太细节的代码就略过了
 
类库说明:
XmlHelper:主要用于加载html,默认构造函数的true,表示从html加载
MutileLanguage:基于XmlHelper的扩展,允许从xml/html中加载语言文件
到此,第一步参数初始化就完成了。
 
二:页面加载:private void Page_PreLoad()
 
经参数初始化之后,将预加载html,并进行初步处理, 秋色园QBlog 完整流程如下:
1:如果开启缓存:尝试读取三级缓存,页面缓存
2:不存在缓存:进入加载页面流程
3:对加载后的页面,处理CSS/IMG的路径
4:对加载后的页面,进行多语言翻译
5:根据Request.Form提交的参数判断,是不是Post提交数据,如果是,将引入新的Post处理流程。
 
以下为 秋色园QBlog 流程代码,仅供参考:
 
说明:
本阶段涉及到以下多个重点问题:
1:如何加载页面?
2:如何加载语言文件?
3:如何处理CSS/IMG路径?
4:如何统一翻译?
5:引发新的OnPost流程?
这些细节问题,将在下节进行更详细的解析,本节顺着把下面的流程给解析完。
 
三:页面填充区:ashx处理程序负责的3个流程
 
在经过参数初始化,页面加载两个流程之后,各ashx处理程序的任务将变的简单
1:protected abstract void Page_Load()
正常访问:重写此方法,对页面进行内容填充。
 
2:protected virtual void Page_OnCache()
缓存访问:重写此方法,完成个别的处理,如:用户名
 
3:protected virtual void OnPost()
提交访问:重写此方法,对提交内容处理,并入库
 
四:输出前的处理:private void Page_PreEnd()
 
当参数初始化->加载页面->填充页面等步骤完成之后,
在将页面的html输出给客户端之前,
还需要处理点事情,而这个过程,将是处理这些事情的好地方。
 
秋色园QBlog 在这里,主要都处理了哪些流程呢?如下:
1:计算用户和文章的访问统计
2:处理页面的标题
3:缓存页面

五:页面html输出到客户端:private void Page_End()
 
这里的处理将变的相当的简单:
输出:XmlDocument.OuterXml到客户端
销毁:调用各个全局变量的Dispose方法,注销各个对象。
 
总结
本节相对详细的解析了 秋色园QBlog 整个生命周期处理流程,
并介绍了每个周期要处理的事情。
但具体还留下很多细节,等待详细的解析及示例。
而这些,下一节为你的解析:如何加载页面?及如何实现页面多语言翻译?


     本文转自cyq1162 51CTO博客,原文链接: http://blog.51cto.com/cyq1162/500314 ,如需转载请自行联系原作者


相关文章
|
28天前
|
算法 数据处理 开发者
FFmpeg库的使用与深度解析:解码音频流流程
FFmpeg库的使用与深度解析:解码音频流流程
35 0
|
1月前
|
消息中间件 Unix Linux
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
48 1
|
1月前
|
数据采集 数据可视化 大数据
Python在数据科学中的实际应用:从数据清洗到可视化的全流程解析
Python在数据科学中的实际应用:从数据清洗到可视化的全流程解析
37 1
|
20天前
|
C++
C++ While 和 For 循环:流程控制全解析
本文介绍了C++中的`switch`语句和循环结构。`switch`语句根据表达式的值执行匹配的代码块,可以使用`break`终止执行并跳出`switch`。`default`关键字用于处理没有匹配`case`的情况。接着,文章讲述了三种类型的循环:`while`循环在条件满足时执行代码,`do/while`至少执行一次代码再检查条件,`for`循环适用于已知循环次数的情况。`for`循环包含初始化、条件和递增三个部分。此外,还提到了嵌套循环和C++11引入的`foreach`循环,用于遍历数组元素。最后,鼓励读者关注微信公众号`Let us Coding`获取更多内容。
19 0
|
29天前
|
运维 Linux Apache
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
LAMP架构调优(十)——Apache禁止指定目录PHP解析与错误页面优化
199 2
|
1月前
|
数据采集 前端开发 JavaScript
Java网络爬虫实践:解析微信公众号页面的技巧
Java网络爬虫实践:解析微信公众号页面的技巧
|
6天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
16 0
|
6天前
yolo-world 源码解析(六)(1)
yolo-world 源码解析(六)
8 0
|
7天前
yolo-world 源码解析(五)(4)
yolo-world 源码解析(五)
16 0
|
7天前
yolo-world 源码解析(五)(1)
yolo-world 源码解析(五)
30 0

推荐镜像

更多