IHttpHandlerFactory 之完美应用, 自定义页面引擎
2005-08-07 10:09
513 查看
对于IHttpHandlerFactory,IHttpHandler,xml, xslt 的介绍,网上有很多,我这里不多介绍。这里介绍一个基于IHttpHandlerFactory 应用的页面引擎技术。
我的思路是当客户端发出http请求时利用实现IHttpHandlerFactory接口的对象实例化实现IHttpHandler接口的页面objExample.exml,在objExample.exml中调用其对应的objExample.xml, 从xml中读取相应的显示模块template,根据template的描述实例化template中标记的对象objTemplate,并读取template中标记的template.xslt,然后用objTemplate把template.xslt转换成html发回替换objExample.xml中的template模块。
这样做的好处是很容易的实现页面和代码的分离,定义页面样式容易,执行效率高。我做了几个应用,网址为:http://www.cheagle.com,http://www.ganenfang.com,在我今后的应用中,还会加入css2.0的标准,用div代替table。
下面是我写的一些此技术应用的代码:
1:实现IHttpHandlerFactory接口
using System;
using System.Web;
using System.Web.SessionState;
using CommonTools.PageEngine;
namespace MainEngine
{
/**//// <summary>
/// ExmlFactory 的摘要说明。
/// </summary>
public class ExmlFactory : System.Web.IHttpHandlerFactory,System.Web.SessionState.IRequiresSessionState
{
private readonly string namespaceStr = "MainEngine.Page.";
实现接口#region 实现接口
public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
string pageName = this.GetPageName(context.Request.Url.AbsolutePath);
object obj = Activator.CreateInstance(this.GetHandlerType(pageName));
IBaseHandler iobj = (IBaseHandler)obj;
iobj.InitData(context);
return (IHttpHandler)obj;
}
public virtual void ReleaseHandler(IHttpHandler handler)
{
}
#endregion
得到page名 GetPageName#region 得到page名 GetPageName
/**//// <summary>
/// 得到page名
/// </summary>
/// <param name="url">url地址</param>
/// <returns>page名</returns>
private string GetPageName(string url)
{
string fname = url.Substring(url.LastIndexOf('/') + 1);
string cname = fname.Substring(0, fname.IndexOf('.'));
return cname.ToLower();
}
%
我的思路是当客户端发出http请求时利用实现IHttpHandlerFactory接口的对象实例化实现IHttpHandler接口的页面objExample.exml,在objExample.exml中调用其对应的objExample.xml, 从xml中读取相应的显示模块template,根据template的描述实例化template中标记的对象objTemplate,并读取template中标记的template.xslt,然后用objTemplate把template.xslt转换成html发回替换objExample.xml中的template模块。
这样做的好处是很容易的实现页面和代码的分离,定义页面样式容易,执行效率高。我做了几个应用,网址为:http://www.cheagle.com,http://www.ganenfang.com,在我今后的应用中,还会加入css2.0的标准,用div代替table。
下面是我写的一些此技术应用的代码:
1:实现IHttpHandlerFactory接口
using System;
using System.Web;
using System.Web.SessionState;
using CommonTools.PageEngine;
namespace MainEngine
{
/**//// <summary>
/// ExmlFactory 的摘要说明。
/// </summary>
public class ExmlFactory : System.Web.IHttpHandlerFactory,System.Web.SessionState.IRequiresSessionState
{
private readonly string namespaceStr = "MainEngine.Page.";
实现接口#region 实现接口
public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
string pageName = this.GetPageName(context.Request.Url.AbsolutePath);
object obj = Activator.CreateInstance(this.GetHandlerType(pageName));
IBaseHandler iobj = (IBaseHandler)obj;
iobj.InitData(context);
return (IHttpHandler)obj;
}
public virtual void ReleaseHandler(IHttpHandler handler)
{
}
#endregion
得到page名 GetPageName#region 得到page名 GetPageName
/**//// <summary>
/// 得到page名
/// </summary>
/// <param name="url">url地址</param>
/// <returns>page名</returns>
private string GetPageName(string url)
{
string fname = url.Substring(url.LastIndexOf('/') + 1);
string cname = fname.Substring(0, fname.IndexOf('.'));
return cname.ToLower();
}
%
相关文章推荐
- Unity&WebForm(1): 自定义IHttpHandlerFactory使用Unity对ASP.NET Webform页面进行依赖注入
- [导入]自定义IHttpHandlerFactory使用Unity对ASP.NET Webform页面进行依赖注入
- URLRewrite重写的简单应用和自定义出错页面
- SharePoint 2010 应用自定义aspx页面调换列表默认的新建(NewForm.aspx),查看(DispFo...
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(二)
- SharePoint 2010 应用自定义aspx页面调换列表默认的新建(NewForm.aspx),查看(DispFo...
- MOSS 自定义应用页面得到ListId和ItemId
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
- 实例应用 自定义页面taglib标签
- iOS应用自定义启动加载页面(launch image)的命名规则详述
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
- MOSS 自定义应用页面得到ListId和ItemId
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(二)
- MSDN Visual系列:WSSv3中通过Tokens使自定义应用页面得到ListId和ItemId
- devise在引擎中安装后,设置访问自定义页面
- 01-自定义错误页面(jsp的基本应用)
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)(转)
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)