第二十六章 使用 CSP 进行基于标签的开发
第二十六章 使用 CSP 进行基于标签的开发
CSP 允许使用标准 HTML 文件开发 CSP 应用程序。 CSP 编译器将 HTML(和 XML)文档转换为可以响应 HTTP 请求的类中的 %CSP.Page。
CSP 编译器生成的类与自己创建的类没有什么不同,并且完全可以互操作。这使可以选择是通过 HTML 页面开发 CSP 页面,还是通过在中创建作为 %CSP.Page 扩展的类,该选项卡可在应用程序中使用。检查生成的 CSP 类在调试中通常很有用。
CSP 编译器处理的 HTML 文档包含可能控制类生成、提供控制流、管理数据访问和控制服务器端行为等标签。这些标签是 CSP 标记语言或 CSP 标签。这些标签在开发时在 CSP 服务器上进行解释。 CSP 发送给 HTTP 客户端的 HTML 是完全标准的,不包含 CSP 标签。
在 CSP 文件中,可以使用普通的 HTML 标记以及:
- 使用
#( )#缓存数据表达式,在页面生成时替换值。 Caché CSP标签<csp:xxx>, 提供内置和自定义功能。Caché脚本, <script language=cache runat=server/compiler>,在页面生成或页面编译期间执行Caché代码。Caché方法:可以从页面中调用的可重用类方法。- 服务器端子例程调用,
#server()#和call()#,它们从客户端代码(超事件)调用服务器端子例程。 - 自定义标签,在“开发自定义标签”一章中描述
CSP 编译器
CSP 编译器是一组运行在 Caché 服务器上的 类和程序,
- 使用 `` 标记语言读取和解析 HTML 文档,
- 应用基于
CSP规则的模式匹配逻辑, - 生成一个
Caché类,并且 - 将类编译为可执行代码。
例如,当编译以下简单的 CSP 文档 hello.csp 时,
<html>
<body>
Hello!
</body>
</html>
CSP 编译器将其转换为类似于以下内容的类:
Class csp.hello extends %CSP.Page
{
ClassMethod OnPage() As %Status
{
Write "<html>"
Write "<body>"
Write "Hello!"
Write "</body>"
Write "</html>"
Quit $$$OK
}
}
当用户从浏览器请求 hello.csp 页面时,CSP 服务器调用生成的 OnPage 方法,将 CSP 文档的原始文本发送到浏览器进行显示。
自动和手动页面编译
可以让 CSP 服务器自动或手动将 CSP 源文档编译成类。
如果自动编译模式(默认)打开,CSP 服务器会自动要求 CSP 编译器根据需要将 CSP 源文档编译成类。 CSP 服务器将源文件的时间戳与类时间戳进行比较,并重新编译源比其类更新的任何页面。通常,在部署的应用程序中会关闭此模式,以避免检查时间戳的开销:
要关闭自动编译,
- 在管理门户中,导航到系统管理 > 安全 > 应用程序 > Web 应用程序。
- 在表中选择一个应用程序并单击编辑。
- 在编辑
CSP应用程序页面上,清除自动编译。
可以将 CSP 源文件显式编译为类。这对于查找错误很有用。
- 在
Studio中打开CSP源文件。 - 选择
Build>Compile.
还可以使用 $System.CSP API 从 Caché 命令行(终端)编译 CSP 源文件(如示例中所示)。此方法使用 URL 路径(不是物理路径)/csp/user/mypage.csp 加载和编译 CSP 文件。 c(编译)标志编译生成的类。 k 标志(保留)保存生成的中间代码以供查看。
Do $System.CSP.LoadPage("/csp/user/mypage.csp","ck")

浙公网安备 33010602011771号