homepage_dm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit homepage_dm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, HTTPApp, WebModu, HTTPProd, ReqMulti,
  5.   WebAdapt, WebForm, WebComp, MidItems, WebSess, WebDisp, CompProd,
  6.   PagItems, SiteProd;
  7. type
  8.   TSessionDemo = class(TWebAppPageModule)
  9.     WebAppComponents: TWebAppComponents;
  10.     ApplicationAdapter: TApplicationAdapter;
  11.     PageDispatcher: TPageDispatcher;
  12.     AdapterDispatcher: TAdapterDispatcher;
  13.     SessionsService: TSessionsService;
  14.     PageProducer1: TPageProducer;
  15.     Hits: TAdapterField;
  16.     SessionHits: TAdapterField;
  17.     procedure PageProducerHTMLTag(Sender: TObject; Tag: TTag;
  18.       const TagString: String; TagParams: TStrings;
  19.       var ReplaceText: String);
  20.     procedure WebAppPageModuleBeforeDispatchPage(Sender: TObject;
  21.       const PageName: String; var Handled: Boolean);
  22.     procedure HitsGetValue(Sender: TObject; var Value: Variant);
  23.     procedure SessionHitsGetValue(Sender: TObject; var Value: Variant);
  24.   private
  25.     nHits: Integer;
  26.   public
  27.     { Public declarations }
  28.   end;
  29.   function SessionDemo: TSessionDemo;
  30. implementation
  31. {$R *.dfm}  {*.html}
  32. uses WebReq, WebCntxt, WebFact, Variants;
  33. function SessionDemo: TSessionDemo;
  34. begin
  35.   Result := TSessionDemo(WebContext.FindModuleClass(TSessionDemo));
  36. end;
  37. procedure TSessionDemo.PageProducerHTMLTag(Sender: TObject;
  38.   Tag: TTag; const TagString: String; TagParams: TStrings;
  39.   var ReplaceText: String);
  40. begin
  41.   if TagString = 'SessionID' then
  42.     ReplaceText := WebContext.Session.SessionID
  43.   else if TagString = 'SessionHits' then
  44.     ReplaceText := WebContext.Session.Values ['SessionHits']
  45. end;
  46. procedure TSessionDemo.WebAppPageModuleBeforeDispatchPage(
  47.   Sender: TObject; const PageName: String; var Handled: Boolean);
  48. begin
  49.   // increase application and session hits
  50.   Inc (nHits);
  51.   WebContext.Session.Values ['SessionHits'] :=
  52.     Integer (WebContext.Session.Values ['SessionHits']) + 1;
  53. end;
  54. procedure TSessionDemo.HitsGetValue(Sender: TObject; var Value: Variant);
  55. begin
  56.   Value := nHits;
  57. end;
  58. procedure TSessionDemo.SessionHitsGetValue(Sender: TObject;
  59.   var Value: Variant);
  60. begin
  61.   Value := Integer (WebContext.Session.Values ['SessionHits']);
  62. end;
  63. initialization
  64.   if WebRequestHandler <> nil then
  65.     WebRequestHandler.AddWebModuleFactory(TWebAppPageModuleFactory.Create(TSessionDemo, TWebPageInfo.Create([wpPublished {, wpLoginRequired}], '.html'), caCache));
  66. end.