第十三章 CSP 中的 HTTP 请求 - CSP 服务器事件流
当 CSP
服务器收到来自 CSP
网关的请求时,它会确定该请求是针对静态页面还是针对 CSP
类的。如果是静态页面,它会立即将页面发回。如果是针对 CSP
类,它会执行以下操作:
- 确定此请求属于哪个会话。如果没有,它会启动一个新会话。
- 确保在正确的
Caché
命名空间中处理请求。 - 确保对象中正确的
%CSP.Session
可用,并根据HTTP
请求中包含的信息在对象中创建%CSP.Request
的实例。如果需要任何解密,它也会这样做。 - 构造
%CSP.Response
对象以允许应用程序修改响应标头。 - 确定应由哪个类处理请求并调用其
Page
方法(该方法又调用OnPage
回调方法)。
CSP 服务器 URL 和类名称解析
CSP
服务器通过解释其 URL
来确定将 HTTP
请求分派到哪个类。 CSP
将 URL
分解为以下组件:
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
应用程序,使用以下算法从文件名中确定处理请求的类的名称:
- 如果文件扩展名是
.cls
,则使用文件名作为类名。 - 如果文件扩展名是
.csp
,则使用csp
(或配置中指定的包名)作为包名,文件名作为类名来创建类名。如果此类不存在或已过期,则CSP
编译器会从CSP
源文件创建一个类(如果启用了自动编译)。该文件的名称和扩展名与URL
中的相同。
例如,CSP
服务器分派此 URL
:
http://localhost:57772/csp/samples/menu.csp 复制代码
到一个名为 menu
的类,该类包含在与目录 /csp/samples
关联的 Caché
命名空间(在本例中为 SAMPLES
命名空间)中运行的包 csp
中。
如果 URL
目录 /csp/accounting
与 Caché
命名空间 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
的类。