zoukankan      html  css  js  c++  java
  • dottext中HttpHandler的一些分析


    <HttpHandler pattern="/rss\.aspx$" type="Dottext.Common.Syndication.RssHandler, Dottext.Common" handlerType="Direct" />

    -->RssHandler

    -->BaseSyndicationHandler:ProcessRequest()

    -->其中CurrentBlog = Config.CurrentBlog(context);

         这个CurrentBlog变量经常使用,比较关键,经过一系列的类初始化后,最后实际调用的是

    -->SqlDataProvider:

    public IDataReader GetConfigByApp(string app)

    {

    SqlParameter[] p =

    {

    SqlHelper.MakeInParam("@Application",SqlDbType.NVarChar,50,app)

    };

    return GetReader("blog_GetConfigByApp",p);

    }

    如果访问的是某人的blog的rss.aspx连接,这里的app就是用户名了,像我就是"lwj"

    -->返回ProcessRequest函数处理,接下看 ProcessFeed();

         RssHandler:ProcessFeed()

    -->其中RssWriter writer = new RssWriter(Entries.GetEntryCollection(query));

         跟踪可知,GetEntryCollection()函数调用了存储过程"blog_GenericGetEntries_10",取得blog的内容,

    每一项内容为一个entry,最后得到的是entry collection

         然后初始化writer,这是RSS显示为XML的关键

         
    -->RssWriter继承自BaseRssWriter,后者又继承自BaseSyndicationWriter,后者又继承自XmlTextWriter

         代码比较简单,不过是string输出

    -->返回ProcessRequest函数处理,接下来WriteFeed();输出页面,至此完成

    接下来有好几个HttpHandler都是差不多的结构,没有细看

    ---------------------------------------------------

    <HttpHandler pattern="/BlogSearch\.aspx$" controls="BlogSearch.ascx" />

    -------------------------------------------

    <HttpHandler pattern="/(?:admin)" type="Dottext.Web.UI.Handlers.BlogExistingPageHandler, Dottext.Web" HandlerType="Factory" />

  • 相关阅读:
    (树链剖分+线段树)POJ
    (树上莫队)HDU
    (LCA+树上主席树)FZU 2237
    (预处理+莫队算法)HDU
    (莫队算法)两题莫队算法统计数量的入门题
    (莫队算法)CodeForces
    sublime配置C++14
    (dfs序+莫队算法/启发式合并/树分治)Codeforces 375D
    (线段树两个lazy标记需要设定优先级)UVA 11992
    (线段树区间合并)UVA 11235
  • 原文地址:https://www.cnblogs.com/lwj/p/307557.html
Copyright © 2011-2022 走看看