澄清一下,该onRequestEnd()
方法仅在您使用该Application.cfc
文件时可用。
该OnRequestEnd.cfm
文件确实像Application.cfm
ColdFusion 中的文件一样工作,它会自动查找它并在找到时处理它的内容。请注意,如果您的应用程序有 Application.cfc 文件,则不能使用 OnRequestEnd.cfm 页面。 因此,假设Application.cfc
您的应用程序没有文件并且只使用Application.cfm
文件,那么该OnRequestEnd.cfm
文件应该适合您。您需要做的就是将您希望在页面请求之后执行的 CFML 代码插入到该文件中。
如果您有多个Application.cfm
文件分布在不同的文件夹中,那么,是的,您还需要OnRequestEnd.cfm
在这些目录中复制/创建文件。您可能能够复制那些目录中的存根 文件,这些目录除了您从另一个单一位置的实际代码OnRequestEnd.cfm
之外什么也不做。cfinclude
至少这样,一旦你有了所有的存根文件,你就可以在一个地方修改代码。
请参阅构建应用程序的文档(它是为 ColdFusion 8 编写的,但仍然适用相同的规则)。如果该页面被删除,以下是相关文本:
ColdFusion 如何查找和处理应用程序定义页面
ColdFusion 使用以下规则来定位和处理定义应用程序特定元素的 Application.cfc、Application.cfm 和 OnRequestEnd.cfm 页面。ColdFusion 定位这些文件的方式有助于确定您如何构建应用程序。
每次 ColdFusion 处理页面请求时,它都会执行以下操作:
当 ColdFusion 开始处理请求时,它会执行以下操作:
- 它在页面目录中搜索名为 Application.cfc 的文件。如果存在,它会创建一个新的 CFC 实例,处理初始事件并停止搜索。(ColdFusion 为每个请求创建一个新的 CFC 实例并处理其初始化代码。)
- 如果请求页面的目录没有 Application.cfc 文件,它会检查目录中的 Application.cfm 文件。如果存在,ColdFusion 逻辑上将 Application.cfm 页面包含在请求页面的开头并停止进一步搜索。
- 如果请求页面的目录没有 Application.cfc 或 Application.cfm 文件,ColdFusion 会向上搜索目录树并首先检查每个目录中的 Application.cfc 文件,如果找不到,则查找 Application.cfm 页面, 直到到达根目录(如 C:)。当它找到 Application.cfc 或 Application.cfm 文件时,它会处理该页面并停止搜索。
- ColdFusion 处理请求页面的内容。
- 当请求结束时,ColdFusion 会执行以下操作:
- 如果您有 Application.cfc,ColdFusion 将处理 CFC 的 onRequestEnd 方法并释放 CFC 实例。
- 如果您没有 Application.cfc,但有 Application.cfm 页面,ColdFusion 会在与 ColdFusion 用于当前页面的 Application.cfm 页面相同的目录中查找 OnRequestEnd.cfm。ColdFusion 不会搜索该目录之外的内容,因此它不会运行驻留在另一个目录中的 OnRequestEnd.cfm 页面。此外,如果应用程序页面出现错误或异常,或者应用程序页面执行 cfabort 或 cfexit 标记,则 OnRequestEnd.cfm 页面不会运行。
以下规则确定 ColdFusion 如何处理应用程序页面和设置:
- ColdFusion 只为每个请求处理一个 Application.cfc 或 Application.cfm 页面。如果 ColdFusion 页面具有指向附加 ColdFusion 页面的 cfinclude 标记,则当 ColdFusion 包含附加页面时,它不会搜索 Application.cfc 或 Application.cfm 页面。
- 如果 ColdFusion 页面具有 cfapplication 标记,它首先处理任何 Application.cfc 或 Application.cfm,然后处理 cfapplication 标记。该标记可以覆盖应用程序文件中的设置,包括应用程序名称和由 cfapplication 标记属性设置的行为。
- 您可以拥有多个使用相同应用程序名称的 Application.cfc 文件、Application.cfm 文件和 cfapplication 标记。在这种情况下,所有具有相同名称的页面共享相同的应用程序设置和应用程序范围,并且可以设置和获取此范围内的所有变量。ColdFusion 使用 cfapplication 标签或最近处理的文件的参数设置,如果设置(例如会话超时)在文件之间不同。
注意:如果您的应用程序在区分大小写的 UNIX 平台上运行,则必须将 Application.cfc、Application.cfm 和 OnRequestEnd.cfm 拼写为大写字母。