文章
· 十月 11, 2022 阅读大约需 3 分钟

第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析

第十三章 CSP 中的 HTTP 请求 - CSP 服务器事件流

CSP 服务器收到来自 CSP 网关的请求时,它会确定该请求是针对静态页面还是针对 CSP 类的。如果是静态页面,它会立即将页面发回。如果是针对 CSP 类,它会执行以下操作:

  1. 确定此请求属于哪个会话。如果没有,它会启动一个新会话。
  2. 确保在正确的 Caché 命名空间中处理请求。
  3. 确保对象中正确的 %CSP.Session可用,并根据 HTTP 请求中包含的信息在对象中创建 %CSP.Request 的实例。如果需要任何解密,它也会这样做。
  4. 构造 %CSP.Response 对象以允许应用程序修改响应标头。
  5. 确定应由哪个类处理请求并调用其 Page 方法(该方法又调用 OnPage 回调方法)。

CSP 服务器 URL 和类名称解析

CSP 服务器通过解释其 URL 来确定将 HTTP 请求分派到哪个类。 CSPURL 分解为以下组件:

Component Purpose
http:// 协议
localhost 网络服务器地址
[<port_no>] 可选,Web 服务器正在运行的端口号;默认为端口 80
/csp/samples/ 目录
object.csp 文件名和扩展名
?OBJID=2 查询

协议和服务器地址由 Web 服务器处理,与 CSP 服务器无关。该目录用于确定 URL 引用的 CSP 应用程序。每个 Caché 配置都可以定义多个 CSP 应用程序,这些应用程序由 URL 的目录部分标识。每个 CSP 应用程序都指定了具有给定 URL 目录的所有请求使用的一些设置。其中最重要的是要在其中执行请求的 Caché 命名空间和身份验证机制,它指定可以建立与应用程序的哪种连接。要创建和修改 CSP 应用程序,请导航到管理门户上的系统管理 > 安全 > 应用程序 > Web 应用程序。

根据 CSP 应用程序,使用以下算法从文件名中确定处理请求的类的名称:

  1. 如果文件扩展名是 .cls,则使用文件名作为类名。
  2. 如果文件扩展名是.csp,则使用csp(或配置中指定的包名)作为包名,文件名作为类名来创建类名。如果此类不存在或已过期,则 CSP 编译器会从 CSP 源文件创建一个类(如果启用了自动编译)。该文件的名称和扩展名与 URL 中的相同。

例如,CSP 服务器分派此 URL

http://localhost:57772/csp/samples/menu.csp

到一个名为 menu 的类,该类包含在与目录 /csp/samples 关联的 Caché命名空间(在本例中为 SAMPLES 命名空间)中运行的包 csp 中。

如果 URL 目录 /csp/accountingCaché 命名空间 ACCOUNTING相关联,则 CSP 服务器分派此 URL:

http://localhost:57772/csp/accounting/Ledger.csp

到一个名为 ledger 的类,该类包含在 Caché 命名空间 ACCOUNTING 中运行的包 csp 中。

请注意,与 CSP 一起使用的 URL 文件名有许多限制:

  • 它们必须是有效的 Caché 类名称(它们不能包含空格或标点字符(点和百分比字符 (%25) 除外)并且不能以数字字符开头)。
  • 它们不得与已在使用的其他类名冲突。

注意:如果 .csp 文件放置在已定义目录的子目录中,则子目录名称将成为用于页面的类中 %CSP.Page 的包名称的一部分。例如,如果 URL 目录 /csp/samples 定义为 CSP 应用程序,则 /csp/samples/myapp/page.csp 引用名为 csp.myapp.page 的类。

讨论 (0)1
登录或注册以继续