首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TWebModule事件处理程序的参数是全局的吗?

TWebModule事件处理程序的参数是全局的吗?
EN

Stack Overflow用户
提问于 2009-12-14 11:12:32
回答 2查看 2.5K关注 0票数 0

我正在使用TWebModule组件用Delphi编写web服务器应用程序。单击TWebModule的Actions属性,可以定义一个新的操作并创建一个"OnAction“事件处理程序。例如:

代码语言:javascript
运行
复制
procedure TMainWeb.MyAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := '<html><body>myvariable: '+request.queryfields.values['myvariable']+</body></html>';
end;

我注意到可以调用非参数化的过程,这些过程可以访问TWebModule的请求、响应和已处理的参数。例如,我已经成功地使用了以下内容,而不是显式创建的操作处理程序:

代码语言:javascript
运行
复制
procedure TMainWeb.WebModuleBeforeDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if Pos('myaction.html',request.url)>0 then
    DoMyAction;
end;


procedure TMainWeb.DoMyAction;
begin
  Response.Content := '<html><body>myvariable: '+request.queryfields.values['myvariable']+</body></html>';

end;

我能保证在DoMyAction中对发送者、请求、响应和处理的引用是“正确的”吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-15 07:29:36

在处理每个请求时,将为其创建(或从预先分配的池中获取) TWebModule实例。请求和响应作为实例上的属性可用。只要您不尝试访问另一个TWebModule实例,请求/响应属性在请求的整个生命周期内都是有效的。如果在TWebModule上调用其他方法,则不必限定它们的使用。如果您打算让其他对象方法或全局过程/函数可以访问它们,则需要将它们作为参数传递。

票数 2
EN

Stack Overflow用户

发布于 2009-12-14 14:43:05

不,你不能在所有情况下都保证这一点,而且你正在准备一场维护的噩梦。

为什么不创建一个DoMyAction,将请求、响应和处理中所需的任何内容作为参数?

在您的示例中,它将变成:

代码语言:javascript
运行
复制
procedure TMainWeb.WebModuleBeforeDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if Pos('myaction.html',request.url)>0 then
  begin
    DoMyAction(Request, Response);
    Handled := True;
  end;
end;


procedure TMainWeb.DoMyAction(ARequest: TWebRequest; AResponse: TWebResponse);
begin
  AResponse.Content := '<html><body>myvariable: '+ARequest.queryfields.values['myvariable']+</body></html>';

end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1898716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档