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

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

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

CSP提供了两种从HTML客户机调用服务器端方法的技术。

  • 使用HTTP提交机制。
  • 使用超事件,#server(同步)或#call(异步)。 也可以使用%CSP.PageHyperEventCall()方法。

使用HTTP Submit的优点是客户端编程简单,不需要客户端组件。 它的缺点是在方法调用之后由客户机重新绘制页面,并且服务器端编程更加困难。

如果使用超级事件,#SERVER#CALL是使用XMLHttpRequest来实现的。#Call是异步的:如果(作为用户)在网页上输入值,则该页面不会立即更新;在更新时,可能已移动到另一个页面。#SERVER是同步的;页面在从调用返回时立即更新。

请注意,同步XMLHttpRequest已被许多浏览器弃用,通常情况下,移动趋势是只支持异步XMLHttpRequest.

HTTP提交和超级事件将在以下各节中进一步描述。

Caché and AJAX

缩写AJAX通常用来指代一组技术,这些技术允许从服务器更新客户端页面的数据,而不必请求新的浏览器页面。Caché超链接允许AJAX交互,而不需要程序员处理所有与服务器的通信。允许AJAX事务的两种方式:

  1. 对于CSP,使用#server()#call()命令允许从客户端直接调用服务器端方法。(也可以使用%CSP.PageHyperEventCall()方法。)
  2. 对于Zen,程序员可以定义ZenMethods来处理客户端-服务器交互。这些可能是同步的,也可能是异步的,具体取决于方法签名:

同步AJAX请求的签名

Method XYZ(arg) as %Status [ZenMethod]    
复制代码

异步AJAX请求的签名

Method XYZ() [ZenMethod]              
复制代码

用Ajax实现并行处理

由于^%cspSession全局节点上的锁,对CSPAJAX请求在服务器上按顺序处理。要使AJAX请求能够并行处理,如果正在使用的应用程序没有在会话全局/对象中设置任何内容(因此只读),可以使用%CSP.Session.Unlock()方法为该会话和%Session.Lock解锁该会话的CSP全局。

通过HTTP提交调用服务器端方法

使用HTTP提交调用服务器代码只需要很少的浏览器功能。对于拥有广泛受众并且必须支持多种浏览器的应用程序来说,这是一种很好的技术。使用HTTP提交时,用户每次单击提交按钮时都会重新显示请求的页面。

可以通过以下方式处理HTTP提交:

  1. 提供包含提交按钮的HTML表单:
<form name="MyForm" action="MyPage.csp" method="GET">
User Name: <input type="TEXT" name="USERNAME"><br>
<input type="SUBMIT" name="BUTTON1" value="OK">
</form>
复制代码

它定义了一个简单的表单,其中包含一个名为UserName的文本字段和一个名为BUTTON1的提交按钮。表单的action属性指定表单提交到的URL。方法属性指定使用哪种HTTP协议提交表单:POSTGET

  1. 当用户单击提交按钮BUTTON1时,浏览器将收集表单中所有控件的值,并将它们提交给表单的action属性指定的URL。(请注意,页面可以通过使用action属性指定其名称或将action属性保留为空来提交回其自身。)。无论表单是通过POST还是GET提交的,CSP都会将提交的值视为URL参数。在这种情况下,提交表单相当于请求以下URL
MyPage.csp?USERNAME=Elvis&BUTTON1=OK
复制代码

包括SUBMIT按钮的名称和值。 如果表单上有多个SUBMIT按钮,则请求中只包含实际按下的数据按钮。 这是检测何时发生SUBMIT的关键。

  1. 服务器代码(在本例中是MyPage.csp)检测到提交已经发生。这是通过测试%request对象中的名称BUTTON1来实现的:
<script language="Cache" runat="SERVER">
   // test for a submit button
   If ($Data(%request.Data("BUTTON1",1))) {
      // this is a submit; call our method
      Do ..MyMethod($Get(%request.Data("USERNAME",1)))
   }
</script>
复制代码
  1. 在调用所需的服务器端逻辑后,服务器代码继续运行并返回HTML以供浏览器显示。这可能是当前表单或不同页面的重新显示。
相关文章
|
3月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
112 9
|
24天前
|
监控 前端开发 应用服务中间件
小游戏源码开发搭建技术栈和服务器配置流程
近些年不同场景游戏层出不穷,现就小游戏开发技术应用及功能详细剖析!
|
2月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
277 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
102 12
|
3月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
68 2
|
3月前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
449 2
|
3月前
|
人工智能 弹性计算 关系型数据库
学生免费领取阿里云服务器一年的方法,以及各种活动
学生可以免费领取阿里云服务器一年,新人可获2核4G,非新人2核2G。访问链接注册并完成学生认证,领取300元无门槛优惠券,购买轻量应用服务器。此外,还有多项活动可赢取实物奖品。
1226 2
|
3月前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
4月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
96 1
|
4月前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。