第二十九章 使用 CSP 进行基于标签的开发 - 服务器端方法

简介: 第二十九章 使用 CSP 进行基于标签的开发 - 服务器端方法

第二十九章 使用 CSP 进行基于标签的开发 - 服务器端方法

运行时代码 ObjectScript 单行

可以使用以下语法运行单行 ObjectScript。这仅适用于单行。行不能换行。

#[ set x = a + b write x ]#
复制代码

服务器端方法

CSP 文档中,可以定义属于为文档生成的类的方法。这是使用带有 <script> 标记的参数来完成的。

可以指定方法的名称以及它的参数列表和返回类型。可以指定用于实现该方法的语言;此语言不需要匹配 CSP 文档的默认语言。

例如,以下定义了一个名为 MakeList 的方法,该方法创建一个包含计数项的有序列表:

<script language="Cache" method="MakeList"
arguments="count:%Integer" returntype="%String">
   New i
   Write "<ol>",!
   For i = 1:1:count {
      Write "<li> Item",i,!
   }
   Write "</ol>",!
   Quit ""
</script>
复制代码

然后,可以从 CSP 文档中的其他位置调用此方法:

<hr>
#(..MakeList(100))#
复制代码

还可以使用继承(使用<csp:class> 标记)将先前定义的方法继承到页面类或调用另一个类的类方法:

<hr>
#(##class(MyApp.Utilities).MakeList(100))#
复制代码

SQL

可以使用 SQL 使用以下 <script> 标记在 CSP 页面内的对象中定义 Caché %ResultSet

以下示例在名为 query 的对象中创建动态 SQL %ResultSet 的实例,准备指定的 SQL 查询并执行它(准备好对其进行迭代)。

<script language="SQL" name="query">
SELECT Name FROM MyApp.Employee ORDER BY Name
</script>
复制代码

通常,在由 SQL 脚本标记创建的对象中使用 %ResultSet 并结合  <csp:while>标记(请参阅 csp:while 标记)来显示查询结果。

当页面完成执行时,SQL <script>  标记在对象中关闭实例化的 %ResultSet

可以使用 ? 指定 SQL 查询的参数。 SQL 文本中的字符。可以使用 SQL <script>标记的 P1、P2、...Pn 属性为参数提供值(其中 n 是参数的数量)。

这是使用 SQL <script>  标签显示当前用户购买的示例。 (假设当前用户的用户 ID 先前已存储在 %session 对象中):

<script language=SQL name=query P1=#(%session.Data("UserID"))#>
SELECT DateOfPurchase,ItemName,Price
FROM MyApp.Purchases
WHERE UserID = ?
ORDER BY DateOfPurchase
</script>
<hr>
Items purchased by: <b>#(%session.Data("UserID"))#</b>
<br>
<table>
<tr><th>Date</th><th>Item</th><th>Price</th></tr>
<csp:while condition="query.Next()">
<tr>
<td>#(..EscapeHTML(query.GetData(1)))#</td>
<td>#(..EscapeHTML(query.GetData(2)))#</td>
<td>#(..EscapeHTML(query.GetData(3)))#</td>
</tr>
</csp:while>
</table>
复制代码

使用<csp:query> 标记,可以使用定义为 Caché 类的一部分的查询在对象中创建 %ResultSet

<csp:query NAME="query" CLASSNAME="Sample.Person" QUERYNAME="ByName">
复制代码

可以像使用 SQL <script> 标记一样在对象中使用生成的 %ResultSet

控制生成的类

使用 <csp:class>标记,可以对 CSP 编译器生成的类施加一些控制。此控件包括为类选择超类并在类参数中定义许多 %CSP.Page的值。

例如,假设除了从类中的常规 %CSP.Page 继承之外,还希望生成的类也从另一个类继承。 SUPER 属性采用逗号分隔的类列表,并将它们用作生成类的超类。

<csp:class SUPER="%CSP.Page,MyApp.Utilities">
复制代码

下面是一个重新定义类参数值的示例: 要将类参数 PRIVATE 的值重新定义为 1(将页面定义为私有),请使用:

<csp:class PRIVATE=1>


相关文章
|
13天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
54 2
|
15天前
|
人工智能 弹性计算 关系型数据库
学生免费领取阿里云服务器一年的方法,以及各种活动
学生可以免费领取阿里云服务器一年,新人可获2核4G,非新人2核2G。访问链接注册并完成学生认证,领取300元无门槛优惠券,购买轻量应用服务器。此外,还有多项活动可赢取实物奖品。
80 2
|
18天前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
1月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
27 1
|
1月前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
1月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
43 3
|
22天前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
24天前
|
Web App开发 安全 网络安全
tplink虚拟服务器设置方法
为了更全面地理解云服务及其在企业应用中的角色,推荐访问,他们提供了一系列高性能、安全稳定的云服务器解决方案,包括但不限于香港云服务器、高防服务器等,特别适合寻求全球化业务扩展的企业。蓝易云不仅拥有全球化的基础设施布局,还提供针对各种行业定制的全栈云解决方案,助力企业实现云端部署,跨越传统界限,即刻启航云端之旅。
27 0
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
53 4
|
28天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
119 0