首页 > 其他分享 >第二十六章 使用 CSP 进行基于标签的开发

第二十六章 使用 CSP 进行基于标签的开发

时间:2022-10-25 09:11:30浏览次数:59  
标签:标签 编译 编译器 HTML 第二十六章 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é 服务器上的 类和程序,

  1. 使用 `` 标记语言读取和解析 HTML 文档,
  2. 应用基于 CSP 规则的模式匹配逻辑,
  3. 生成一个 Caché 类,并且
  4. 将类编译为可执行代码。

例如,当编译以下简单的 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 服务器将源文件的时间戳与类时间戳进行比较,并重新编译源比其类更新的任何页面。通常,在部署的应用程序中会关闭此模式,以避免检查时间戳的开销:

要关闭自动编译,

  1. 在管理门户中,导航到系统管理 > 安全 > 应用程序 > Web 应用程序。
  2. 在表中选择一个应用程序并单击编辑。
  3. 在编辑 CSP 应用程序页面上,清除自动编译。

可以将 CSP 源文件显式编译为类。这对于查找错误很有用。

  1. Studio 中打开 CSP 源文件。
  2. 选择 Build > Compile.

还可以使用 $System.CSP APICaché 命令行(终端)编译 CSP 源文件(如示例中所示)。此方法使用 URL 路径(不是物理路径)/csp/user/mypage.csp 加载和编译 CSP 文件。 c(编译)标志编译生成的类。 k 标志(保留)保存生成的中间代码以供查看。

 Do $System.CSP.LoadPage("/csp/user/mypage.csp","ck")

标签:标签,编译,编译器,HTML,第二十六章,CSP,页面
From: https://www.cnblogs.com/yaoxin521123/p/16823776.html

相关文章

  • HTML标签语义化标签和表格标签
    HTML标签-语义化标签语义化标签:html5中为了提高程序的可读性,提供了一些标签,(没有样式,只是为了提高程序的可读性)<header>:头部<footer>:尾部<htmllang="en"><he......
  • HTML标签链接和块标签
    HTML标签-链接标签a:定义一个超链接属性:href:指定访问资源的URL(统一资源定位符)target:指定打开资源的方式_self:默......
  • a标签属性href中#和javasrcipt:;的区别
    a标签中路径“#”和“javasrcipt:;”的区别​​前言​​​​#的效果​​​​javasrcipt:;的效果​​前言在a标签中如果想要超链接无跳转无反应,我们通常会给标签的href属性......
  • 纯css实现卡牌小标签
    纯css实现卡牌小标签​​效果图​​​​代码部分​​​​补充​​效果图代码部分话不多说,直接上代码!<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8">......
  • HTML标签中文本标签和练习
    HTML标签-文本标签<b>:文本加粗<!--b文本加粗--><b>1、段落标签段落标签段落标签段落标签段落标签段落</b>运行结果: <i>:文本斜体<!--i文本斜体--><i......
  • 第二十五章 CSP Session 管理 - 选择策略时的注意事项
    第二十五章CSPSession管理-选择策略时的注意事项组的注意事项本节包含创建身份验证组时要考虑的一些要点。仅当决定必须通过会话对象共享数据时才使用会话共享。......
  • CSP 日照集训考试 Day2
    考的并不好。主要整理整理错因,并不是为了写题解。T1很简单的题,让我搞成了70pts考场上想的是预处理出第i位之后j出现的次数,然后枚举两个位置,求一下gcd,找一下......
  • JSTL C标签怎么判断参数是否为空
    有时候我们在使用JSTLC标签<c:if>语句的时候,想判断参数是否为空,怎么判断呢,下面来分享一下方法工具/原料JSTLC标签JSTLC标签判断参数是否为空方法方法/步骤第......
  • JSTL中taglib标签中uri和prefix的使用
    在早期的jsp开发中,是使用java代码来控制逻辑和显示的,但这样会给前端开发人员带来些麻烦并且代码的可读性也会降低。为了解决上述情况,标签库被创造出来了。标签库的目的在于......
  • destoon列表中调用tag标签
    destoon列表中调用tag标签。1、打开文件api/extend.func.php,在文件最后添加函数:functionhot_tag($tag){$tag=explode('',$tag);return$tag;}2、在列表......