WebServer教程

更新时间:2024-01-23 04:49:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章. 什么是 Oracle WebServer?

Oracle WebServer是一个与Oracle7 Server紧密集成的HTTP服务器,能够由存储在 Oracle数据库的数据建立动态HTML文件。当数据改变时,这些HTML文件也自动更新,而不需要站点管理员的参与。这种方法用动态地实时地反映基于Oracle7服务器的商务系统中的当前数据,而不是当今大多数站点上可见到的静态的或不变的数据显示。

商务数据是存储在oracle7数据库中的。它在服务器中被格式化为Web文档,然后传输给Web客户机。所有数据只存储一次,依据Web上的使用需要而定期进行“快照”。 构成Oracle WebServer的各部分协同工作,使得投递静态和动态信息均为可能。 Oracle WebServer的组成部分 Oracle WebServer的组成部分如下:

Oracle Web Listener. Oracle Web监听程序接收使用任何浏览器的用户发出的请求。对于静态(基于文件的)页面请求被监听进程立即处理,其功能即是一个HTTP 服务器。Oracle Web Agent. Oracle Web 代理处理来自拥护的对于动态页面的请求。它将连接转向Oracle7 Server, 调用请求的过程,并将结果HTML文件返回浏览器。Oracle WebServer Developer's Toolkit. Oracle WebServer 开发者工具箱是一个帮助用户创建生成动态HTML文件的过程的集合。

Oracle7 Server. Oracle7 Server 为关系型表的数据和所有用于创建HTML页面的程序逻辑提供存储。他们中的每个部分和操作将在以后的章节中详细描述。 1.1 The Oracle Web Listener监听程序

Oracle Web 监听程序是个商业品质级的HTTP服务器,为来自任何Web浏览器的文档请求进行服务。 客户端可以位于使用标准HTTP协议的网络的任何地方。在此协议之下,文档的类型与文档本身一起发往客户端。Web Listener支持多种不同的文档类型。客户端解释并且显示相应的文件,或者将文件传给处理该文档类型的特定程序。例如,在客户机上MPEG viewer将接收由新闻广播宕下来的视频片段。Oracle Web Listener可以处理大量的模拟请求,并具有比目前市场上的HTTP服务器更有效利用系统资源的高级特性。这些特点将在\中详细论述。

Oracle Web Listener接收到一个来自客户机的请求后,他首先判断它请求的是一个静态文件还是动态文件。如果请求的是静态文件,Web Listener将文件和相关的类型信息直接发给客户端。如果请求的是动态文件,它由一个由Web Listener启动的程序在“飞行中”(\the fly\)创建,且与公共网关接口(CGI)兼容。CGI是一个使HTTP服务器能够运行程序并将程序输出作为一个文件发送给用户。大多数HTTP服务器都支持此接口,Oracle Web Listener 遇到一个数据库存储过程的请求时,使用该接口调用Oracle Web Agent。另外,其他任何可执行的程序均可以通过CGI调用。 有关Web Listener的进一步信息,见第二章。

--------------------------------------------------------------------------------

1.2 Oracle Web Agent 代理

Oracle Web Agent是 Oracle Web Listener当接收到一个对数据库存储过程的请求时调用的的一个程序。它处理与Oracle7 Server建立连接的细节。Web代理使用作为Web Agent service的一部分的指定的数据库用户名和口令,来连接到单一的Oracle7 Server。为了连接到不同的服务器,或者同一服务器的不同模式,可以在一个Oracle WebServer上可以配置多个Web Agent 服务。这在准确地控制了Web客户端能够访问的信息的同时,也允许创建从多个不同的数据库汇合数据的应用的极大灵活性。

Oracle Web Agent的进一步内容, 请见第三章 \

--------------------------------------------------------------------------------

1.3 Oracle WebServer 开发者工具箱

Oracle WebServer开发者工具箱是一个帮助用户快速使用Oracle WebServer建立Web应用的一个PL/SQL例程集合和样例应用。样例应用可以作为用户应用的模板。经过简单的修改以包含用户站点的特定的文本和图形,这些样例就可以迅速简单地为特定的站点所客户化。 当Oracle Web Agent登录到Oracle7 Server时,它启动一个已由用户创建的用于生成HTML页面为输出的PL/SQL过程。开发者工具箱中的过程和函数生成实际HTML标记,所以将注意力集中在应用的内容上,而不是HTML的特性上。

有关Oracle WebServer 开发者工具箱的例程的详细内容,请见第四章。

--------------------------------------------------------------------------------

1.4 Oracle7 Server

Oracle7 Server是一个高性能,容错的关系型数据库管理系统,专门为联机事务处理和大型数据库应用而设计。Oracle7 Server能可靠地管理在多用户环境下的大量的数据。Oracle7 Server即使在很多用户并发地存取数据时,也能提供高性能。它对于未授权访问也是安全的,并提供失败恢复的有效方案。

有关Oracle7 Server的讨论请见本手册的第 4 章及本书前面列出的文件。 第二章. Oracle Web Listener

Oracle Web Listener是一个高性能,可伸缩, 可移植的 HTTP 服务器,支持要求迅速响应的的高流量的 Web 应用。 Oracle Web Listener专为实现企业网络或全球因特网上的分布式信息系统而设计.

从用户的角度看,Web 是一个文档或页面的集合,他们包含了文字,图象和指向其他页面的链接。通过点,单击并浏览这些链接,用户可以立即访问一个分布的信息系统。Oracle Web Listener 融合了信息检索和超文本技术来建立一个强大的全球信息系统。

Oracle Web Listener 工作在简单的客户机-服务器模式下。客户端向 Oracle Web Listener 发出请求。Listener 通过读取URL来解释请求,找到或生成所请求的信息,并将信息返回给通过表格进行请求的客户机。

在同一台机器上可以运行多个使用各自专有端口的 Oracle Web Listeners。使用多个 Web Listeners 是在多个不同应用之间平衡负载的好方法。

Oracle Web Listeners 与其客户端通讯所使用的语言是超文本传输协议(HTTP)。Web Listeners实现的是IETF HTTP工作组(http://www.ics.uci.edu/pub/ietf/http/) 定义的HTTP协议的版本1.0。所有的Web客户端为了能收发超媒体文档,必须能讲HTTP协议。 HTTP协议是一种应用级的协议,轻便并能满足分布式的协同工作的超媒体信息系统所要求的速度。它是一种通用的,无状态的面向对象的协议,通过扩展它的请求方法(命令)可以用于很多系统。 本章后面将讲述:

Oracle Web Listener 的特性 Oracle Web Listener 的配置参数 2.1 Oracle Web Listener 的特性

Oracle Web Listener 包含了一定数目的特性以在不同的环境下增强其性能和扩展其使用能力。

High Performance Architecture 高性能的体系结构

为使性能最大化,Oracle Web Listener 被设计为作为通过带单线索的单进程运行的的异步引擎,与大多数HTTP服务器不同,他们每建立一个新连接就启动一个新进程或线程。这显著地减少了服务一个请求所要求的时间,降低了监听机资源的使用,如果是在重负载下提供高性能的话。

File Caching in Memory 文件内存缓存

Oracle Web Listener 允许在内存中缓存一个可配置的经常存取的文件集。当这些文件被客户端访问时,将能提供很好的性能。

在当前版本的Oracle Web Listener 中,进行内存缓存的文件列表由WebServer管理员决定并能手工配置。管理员应定期分析监听程序日志以决定那些文件性缓存并相应的修改设置。

Memory Mapping of Files 文件内存映射

在支持此特性的操作系统上,文件被访问时,Oracle Web Listener 自动将他们映射到内存地址上(除非他们被永久的缓存在内存中了)。这种情况下,文件将象是从内存中加载的,允许多于一个连接访问同一文件而避免重复读取磁盘。另外,操作系统通常在前一段传输后,预读内存缓存文件的下一段,所以即使是单一连接的情形下,也能进一步提高性能。

Directory Mapping 目录映射

Oracle Web Listener 支持将在Web上外部表现在URL中的路径名映射到Web Listener 机器上的内部位置。这使得即使Web Listener的磁盘被重新规划了,对客户端仍是一致的。外部可见(虚拟)目录到本地文件系统中的物理目录的指定映射是管理员可配置的。 例如:URL

http://www.acme.com/products/info.html

可以映射为系统 www.oracle.com 的目录 /disk1/ products : /disk1/products/info.html

如果一次重组时,将目录 products 移到 /disk3, 管理员在Web listener 配置文件

(owl.cfg), 中重新配置虚目录 products 指向新位置 /disk3/products,而Web客户则完全不知道这一改变.

注意:Web Listener需要重新载入以识别改动。有关重启Web Listener的信息,见本章后面的\。

Language Extensions 语言扩展名

Oracle Web Listener支持文件按照不同的字符集存储以适应所使用的语言。Web Listener可以解释文件扩展名以得出文件中数据的类型(如HTML数据)和文件是以何种语言写的。语言影射特性有管理员控制,并允许客户端访问以与不同的语言相应的字符集书写的文件。指定的文件扩展名与语言和数据类型的影射关系有Web Listener配置文件控制。

HTTP Protocol Negotiation Features HTTP协议协商特性

HTTP的特点之一是客户端和HTTP服务器交换有关他们能传输和能解释的数据类型的信息。这些协商特性允许使用不同的数据类型和语言构造系统。

当一个Web客户机请求一个对象时,它可以指定它能接收何种类型的数据并表示指定类型的配置。 Web Listener可以用此信息发出相应格式化的数据到客户机,如果Web Listener上储存着不止一种格式的话。这一过程叫作HTTP类型协商,OWL完全支持它。例如,文档中包含行中的图象,它可以以或者gif或者JPEG的格式传输到Web客户端。

Oracle Web Listener 也支持类似的概念来协商文挡应以哪种语言显示给特定的用户。 文档可能以多种语言存储(例如英语和加拿大法语),如果客户端表明了配置将发送适宜的文档拷贝给他。这极大简化了多语站点以的维护,因为不需要为不同的语言维护重复的URL或分离的目录。

Common Gateway Interface 通用网关接口 (CGI)

通用网关接口(CGI)版本1.1是HTTP服务器用以执行一个程序产生HTML输出的标准技术。这种技术提供了动态内容而不是来自磁盘文件的静态内容。Oracle Web Listener 与CGI 1.1完全兼容。

当一个请求进来而Web Listener识别出该请求将执行一个CGI应用,将创建一个单独的进程执行这一操作。Web Listener与该进程保持通讯,将Web客户端的输入传过去,检索其生成的用于客户端屏幕显示的HTML输出。

Web Listener管理员可以配置指定的目录以包含CGI程序用以运行而不是传输文件。这些都可以用Web Listener配置文件来做到。有关WEb Listener配置文件,参见本章后面的\。

CGI Application Execution CGI程序执行

当客户端向Oracle Web Listener发出一个URL请求,URL的路径部分被分析以决定它是否代表一个包含文件的目录(通常情况下)。 这些文件被立刻发给客户端,对于包含CGI应用程序的目录,有时被作为脚本引用,他们必须被作为单独的程序执行以生成发往客户端的输出。CGI应用执行技术是Web的关键特性之一。它允许多个信息源的集成。 Oracle Web Agent即是一种可用此项技术访问的的CGI应用。

一旦监听程序发现URL代表一个CGI应用,它将解释此URL并分解出路径信息和参数,传给正在启动的CGI应用。

CGI程序的URL可分为3部分:

virtual path 虚拟路径

extra path information 另外的路径信息 query string 查询字符串

The syntax is as follows: 语法如下:

virtual_path extra_path_information?query_string virtual path

虚拟路径 模拟一个你用于访问常规文档或图象的路径。就是说,它为服务器指向一个含有你想执行的CGI程序的文件。

extra path information

另外的路径信息 你将在URL中附加在程序名后面的额外信息。另外的路径信息是一个可选项。它可以用于传递常量信息给那些依赖客户端输入的脚本。它也可以用于访问服务器的虚拟-物理路径的转换机制。

query string

查询字符串 是URL的另一个可选项。它既可以显式地由超文本锚给出,也可以是来自用户

在带ISINDEX标记的HTML文件中的搜索对话框中的输入,或者来自HTML表格。

来自URL或其他资源的用户输入 当数据在搜索对话框或文本输入表格中输入时,数据将使用URL encoding进行编码。此编码依据以下规则编码:

空格变成加号+

任何一个字符都可以转义为%xx格式的序列,其中 x 是十六进制数字。字符由转换两位十六进制数成的代表字符的0-255的数字表示。

如果来自一个由ISINDEX标记的搜索对话框结果,以上的转换将直接进行。另外,如果你想避免自己进行次转换,你的CGI程序可以在命令行上接收已完全转换的信息。如果数据来自HTML表格,数据变量的位置依赖于你的HTML文档中表格标记中指定的方法属性。如果使用GET方法,这些信息来自变量QUERY_STRING。如果使用POST方法,这些信息使用标准输入发送给你的程序。 数据以此格式提供:

name1=value1&name2=value2.....&nameN=valueN

如果在编码后的数据中有任何等号(=)或与号(&),他们被使用以上规则编码。为了正确地解码数据,NAME=VALUE对不应被分割直至与号,每个对应分为名称和值,URL编码将对每一个对进行。

当表格提交时,你通常使用表格项出现的顺序来决定你的CGI程序接收NAME=VALUE对的顺序。然而你不能依赖这种行为。不同的表格元素有他们自己的方式来决定什么值将和他们给定的名字相联系。所有文本性的输入区使用用户的键入作为值。

Radio button圆型钮使用使能钮的值

Checkboxes检查框不打叉时,他们或者使用空字符串或者他们的名字根本不在加密表格数据中出现。

隐藏的表格项可以用于发送常量或状态信息给你的脚本。

Imagemap Support图形映射的支持Oracle Web Listener的图形映射特性允许发送给客户端的显示图形有多个链接区,用户点中图形的不同位置将进行不同的超级链接。例如一个世界地图,允许用户通过点击来选择国家。图形映射的使用在sophisticated站点中十分普遍。 Oracle Web Listener在Web Listener中包含图形映射的内部处理。很多其他的HTTP服务器要求在解释图形映射时,创建一个独立的进程。通过内部完成这些,在这一HTML的常见特点被用到时,Oracle Web Listener提高了性能并降低了系统资源的使用。

Domain Name Server (DNS) Resolution域名服务器(DNS)解析

当客户端向HTTP服务器请求一个URL时,客户机的网络地址(IP地址)被服务器登记且可以用来控制对HTTP服务器上的文件的访问权限。域名系统(DNS)将客户机的网络地址转换为ASCII码的客户机主机名。

注意: DNS处理能定时消费,因为另一台运行名系统的机器可以被联系上。 Oracle Web Listener提供控制DNS解析网络地址的三个选项: 总是解析连接中的地址

进行“懒”解析,只有一个外部应用,安全模块或CGI脚本需要时,才解析名字。即使客户机要求,也不解析地址。

你可以使用Oracle WebServer管理工具或编辑配置文件来控制使用那种类型的DNS解析。缺省为提供最佳性能的-不使用DNS进行解析。

当DNS解析发生时,结果被缓存。在最近的成功中,通常有几个来自同一客户机的 连接,这能在要求DNS解析时,最小化性能降低。

Client to Web Listener Security客户到Web Listener的安全

Oracle Web Listener的安全框架包括对基本授权和授权。这两种模式的都提供文件上的用户名和口令的授权。也可以进行基于客户机网络地址的访问控制。使用Oracle WebServer 管理工具 配置安全特性。

Basic Authentication 基本授权

此模式使用在通过网络不加密地发送的用户名和口令。实践中这种技术已广泛地被digest授权取代,但它与较老的浏览器兼容,而digest授权不能。

Digest Authentication Digest 授权

这种模式与基本授权相似,除了它将用户名和口令加密地在网络上发送之外。一个加密的校验和(digest)用于编码口令,防止攻击者获取用户名/口令的原样组合。这种技术显然比基本授权更安全,并建议所有新应用使用,但对于较老的浏览器,其中某些还较为普遍,并不支持Digest授权。

Internet Protocol-Based Restriction 因特网基于协议的限制

客户机的网络地址可以用于限制对Oracle Web Listener上信息的访问权。地址可以独立的被限制或允许访问,或者整个网络可以指定允许某些位置下的用户访问,而禁止其他所有的用户的访问。

当客户端请求一个受基于IP的安全的保护时,它的地址与指定的地址按照给定的顺序进行比较,当发现一个匹配时,客户端按照指定的被允许或禁止访问。受基于IP限制保护的文件可能不能被在配置参数列出的之外的客户端访问。

注意:Digest授权是较安全的判断用户真正是谁的技术,因为认证(口令)必须代表获取权限。基于网络地址的限制技术很适于避免口令管理问题,但仍不太安全,因为精明的攻击者可以伪造网络地址。

Domain Name -Based Restriction 基于域名的限制

基于域名的限制类似于基于IP的限制。一个组或主机的列表指明了哪些主机有或没有有一个文件集的访问权限。这项技术使用符号化的主机名,而不是网络地址。因此,它更便于管理员,因为如果网络结构变化时网络地址可能变化。这项技术当精明的攻击者伪造网络地址并假设一个他们不拥有的主机标志时,也会遇到问题。

Security on Specific Files 指定文件上的安全

指定安全可以将他们与基本授权,Digest授权,IP地址约束,域名约束,或者一种授权和一种限制方法的任意组合。

Other Security Features 其他安全特性

除授权之外,Web Listener的用户和组标识(在UNIX上)可以在配置文件中指定,Web Listener自己也限制在尽能访问对该用户名和组有效的范围内。这允许WebListener被启动时象一个有权限用户一样在执行方面有要求,但操作时仿佛它是个无权限的程序。这提供了对直接攻击Web Listener进程的另外的安全保护。有关组标识以安全为目的的使用的信息,见第七章的“基本配置参数”。 Logging 日志

当对Web Listener请求时,请求信息可以被登录在指定的日志文件里。Oracle Web istener以工业标准的通用日志格式记录连接。此格式包括客户请求的第一行,其中指明了动作,URL,和协议版本。它也包括例如客户机主机地址,请求是否成功,传输了多少字节之类的信息。这些信息可以以后用于分析哪些用户进行了哪些类型的访问,或检查错误。使用WebServer管理工具可以在Web Listener配置文件中指定日志文件的目录以及标准日志和错误日志的名称。

注意: 确保Web Listener在一个有权限读写日志目录的用户下运行。 Starting Up and Shutting Down the Oracle Web Listener 启动和下宕Oracle Web Listener

启动,下宕,或重启 Oracle Web Listener的最简单的方法是使用Administration Utility。如果你想在UNIX操作系统执行这些操作,按照下述方法使用WLCTL工具。 The WLCTL (Web Listener Control) Utility

此工具位于 ORACLE_HOME bin目录下,能够让你轻松地启动,下宕,或重启 Oracle Web Listener。

使用WLCTL进行不同的操作的语法如下:

> wlctl [start|stop|reload] [port_number] ORACLE_HOME

如果ORACLE_HOME在你的环境中已设置,且ORACLE_HOME表示Oracle WebServer安装的位置,它就不需要包含在命令行中。

以下例子假设Oracle WebServer位于 /u01/oracle: 当 ORACLE_HOME 已设置时: >wlctl start 8888

在命令行指定ORACLE_HOME:

>wlctl start 8888 /u01/oracle 当 ORACLE_HOME 已设置时: wlctl stop 8888 在命令行指定ORACLE_HOME: wlctl stop 8888 /u01/oracle 当 ORACLE_HOME 已设置时: >wlctl reload 8888 在命令行指定ORACLE_HOME:

>wlctl reload 8888 /u01/oracle

停止和重启功能要求你所要停止和重启的Web Listener的Listener PID文件存在于Web Listener配置文件所指向的位置。 第三章 Oracle Web Agent的构成

Oracle Web Agent是当Web Listener收到一个动态文档请求时执行的CGI程序。此程序登录进数据库并执行作为URL的一部分而指定的PL/SQL存储过程。

作为开发Web Agent的PL/SQL工具,WebServer Developer's Toolkit包括以下包: HTP (超文本过程) 和 HTF (超文本函数) 简化了在用户的PL/SQL代码里 生成HTML标记的工作。HTP和HTF自动生成由Oracle Web检索的HTML标记。 OWA_UTIL 包含了能使程序员更快速构造HTML输出的实用函数。

注意: Web Agent 也包括一些叫OWA的PL/SQL包,它包括一些由Web Agent调用的进行诸如设置CGI环境变量和从PL/SQL表中提取由PL/SQL代码生成的输出等实用功能。一个PL/SQL开发员不能直接调用OWA包,虽然它可以用用户通过URL直接调用。 Oracle WebServer Developer's Toolkit的进一步信息见第四章。

--------------------------------------------------------------------------------

谁使用Oracle Web Agent

Oracle Web Agent 可以被以下人使用:

想开发与oracle7互操作的Web应用的程序员。Oracle Web Agent允许程序员创建 PL/SQL过程来进行数据库操作并将结果格式化为HTML文档。这些文档被返回Web 客户端。 所以,程序员需要了解以下知识:

用于生成HTML格式文档的超文本函数和超文本过程。 PL/SQL过程语言的基础。

另外,以下知识对于程序员也非常重要:

哪些公共网关接口的变量 对于 PL/SQL应用是有效的,以及如何存取它们。 Web Agent如何处理参数 (本章介绍)

如何使用OWA_UTIL PL/SQL实用包 (, \中介绍) 想安装和设置Oracle Web Agent,并用管理员工具维护Web Agent的系统管理员。 管理员需要了解以下知识:

如何创建,修改和删除Web Agent服务。

在哪里安装由Web Agent提供的开发工具PL/SQL包。 下述信息对管理员也十分有用: Oracle Web Agent如何工作 (本章讲述) Web Agent如何处理错误 (本章讲述) 3.1 Oracle Web Agent如何工作

Oracle Web Agent使你能用开发工具箱创建PL/SQL存储过程来存取Oracle7的数据,动态生成来自那些数据的HTML文档,并将文档返回给客户端。

下面描述一下Oracle Web Agent是如何一步一步工作的: 1. 用户从浏览器提交一个URL。 用户以下列方法之一提交URL: 通过从HTML页面上选择一个链接 在其浏览器的打开URL框中指定一个URL

提交HTML表格

此动作触发了一个与URL相关的GET或POST请求方法操作。请求方法使用HTTP协议传给了Web Listener。

2. Web Listener 启动了 Web Agent.

Web Listener判断此URL是否与Oracle Web Agent有关(通过抽取URL的/owa部分),并调用Web Agent。为与CGI标准兼容,Web Listener使几个环境变量对Web Agent有效. 3. Web Agent连接到Oracle7 Server.

为连接到Oracle7 Server,Web Agent要求一些诸如连接到哪个服务器,使用什么用户名和口令等信息。这些信息作为Web Agent的一部分,存储在位于OWS管理目录下的文件owa.cfg 中。Web Agent通过解析环境变量SCRIPT_NAME来决定使用哪个服务,环境变量SCRIPT_NAME是由Web Listener根据CGI 1.1说明书设定的。

Web Listener从URL中/owa 前面的路径段推出这个环境变量的值。例如,如果/ows-bin/hr/owa是URL的前边部分,那么hr就是要使用的服务。

有关如何设置Web Agent service的进一步的内容, 请见本章后面的\Service\一节. 4. PL/SQL 过程被调用

连接到数据库后,Web Agent调用相应的PL/SQL过程,其名字通过解析环境变量PATH_INFO获得。如果PL/SQL过程要求参数,这些参数已经由Web Listener通过环境变量QUERY_STRING或标准输入(这依赖于请求方法是\还是\)传给了Web Agent。Web Agent将把这些参数传给PL/SQL过程。

有关PATH_INFO, SCRIPT_NAME,和QUERY_STRING 以及Oracle Web Agent如何使用他们的内容, 请见本章后面的\如何使用CGI环境变量\一节. 5. PL/SQL过程执行, 生成 HTML 文档.

在Developer's Toolkit的帮助下,PL/SQL过程从Oracle7数据库中提取出数据并在PL/SQL表中生成了HTML文档。

有关Developer's Toolkit的内容请见第四章\6. Web Agent将生成的HTML文档传给Oracle Web Listener.

如果PL/SQL过程成功结束,Web Agent将从PL/SQL表里取出生成的HTML文档,并把它发送到标准输出,那里是Web Listener期望CGI应用把他们的输出发送到的地方。 如果PL/SQL过程返回错误,Web Agent则把程序定义的出错页面发送到标准输出。 有关如何处理错误的内容请见\一节。

7. Web Listener把 HTML文档发送回原发出请求的浏览器

Web Listener使用HTTP将HTML文档发还浏览器。浏览器并不知道请求的文档是在飞行中生成的,把它象任何其他HTML一样显示在屏幕上。 Web Agent服务 Service

因为人们希望单个Web Listener能够访问多个数据库或一个数据库里的多个模式,Oracle Web Agent支持服务的概念。我们用下面的例子描述一下服务的概念:

公司A想让他们存储在Oracle7数据库中的数据可以被公众通过Oracle Web Listener 访问。然而公司内不同部门对数据库以用户名为分割的不同部分(模式)有访问权限。所以,人力资源部和财务部使用不同的用户名/口令组合来登录数据库。如果他们都想用使用Oracle Web Agent的CGI应用访问他们的数据,Web Agent需要使用正确的用户名/口令来登录数据库。采用这种方案,含有配置信息的owa.cfg文件中包含两个服务,HR 服务和AP服务。每个服务有相关的用户名/口令,ORACLE_HOME参数,和ORACLE_SID参数。当一个来自浏览器的请求到来时,Web Listener从URL中抽取出服务名并读取owa.cfg文件找出将使用的参数。

为连接到Oracle7服务器,Web Agent需要在Web Agent服务中指明以下信息: username 用户名 password 口令 ORACLE_HOME

ORACLE_SID (仅对本地数据库)

SQL*Net V2 Service Name or Connect String (仅对远程数据库)

Administration Utility允许管理员显示,创建,修改或删除Web Agent服务。用创建Web Agent的表格,你不需要直接修改配置文件owa.cfg。参见 \Agent Services,\。

下面是一个owa.cfg文件中Web Agent服务项的例子,每个参数有相应的解释。

Developer's T# (

owa_service = es (

owa_user = www_es )

(

owa_password = tiger ) (

oracle_home = /opt/oracle7 ) (

oracle_sid = esprod ) (

owa_err_page = /es_err.html ) (

owa_valid_ports = 8000 8888 ) (

owa_log_dir = /opt/oracle7/ows/log ) (

owa_nls_lang = AMERICAN_AMERICA.US7ASCII ) )

owa_service Web Agent 服务的名字 owa_user

Web Agent连接数据库用的数据库用户名。 owa_password

Web Agent连接数据库用的数据库口令。 oracle_home

Oracle7代码树在文件系统中的位置。它应该是Web Agent服务连接到的数据库的

ORACLE_HOME,除非Web Agent设置为通过SQL*NET连接到一个远程数据库。这种情况下,指定Web Agent所在的ORACLE_HOME。Web Agent总是安装在ORACLE_HOME目录或其子目录下。

oracle_sid

将连接到的数据库的系统ID名。连接到远程数据库时,不要使用。 owa_err_page

Web Agent调用的PL/SQL过程发生错误时,Web Agent返回的HTML文档的路径。这是个实际路径,而非Web Listener配置中的那种虚拟路径。 owa_valid_ports

Web Agent将服务的有效的Web Listener网络端口。 owa_log_dir

Oracle Web Agent写出错文件的目录。出错文件的名字为service_name.err。 owa_nls_lang

Web Agent连接的Oracle7数据库的NLS_LANG。若不指定,Web Agent管理程序当服务执行时寻找数据库的NLS_LANG。

Web Agent如何使用CGI环境变量 Web Agent使用的环境变量见表3-1: 变量 包含

REQUEST_METHOD GET 或 POST

PATH_INFO 将调用的PL/SQL过程的名字。

SCRIPT_NAME 包含登录Oracle7时用的Web Agent和服务 。

QUERY_STRING PL/SQL过程的参数(仅对GET方法。POST方法的参数通过标准输入传递。)

表 3 - 1. Oracle Web Agent使用的CGI 变量

下面是一个典型的URL如何被与CGI 1.1说明书兼容的Web Listener解析的例子。 http://www.nhl.com:8080/ows-bin/nhl/owa/hockey.pass?person=Gretzky

1. 子串 http://www.nhl.com:8080 表明Web浏览器要用HTTP协议连接到www.nhl.com主机的端口8080上。

2. 当运行在www.nhl.com上的Oracle Web Listener接收到请求,子串/ows-bin/nhl/owa 表明要求Web Listener去执行Web Agent而不是返回一个静态HTML文件。

3. 调用Web Agent后, Web Listener把/ows-bin/nhl/owa作为环境变量SCRIPT_NAME传给Web Agent。URL的其他部分以这种方式传给Web Agent:子串/hockey_pass作为PATH_INFO,子串\作为QUERY_STRING,传递给Web Agent。 4. Web Agent从SCRIPT_NAME中解析出服务名nhl.

注意:如果Web Agent不能处理传来的服务名, 缺省为owa_default_service.

5. Web Agent解析PATH_INFO来决定hockey_pass为登录Oracle7后调用的PL/SQL过程。 6. Web Agent将在QUERY_STRING变量中传给他的参数传给他调用的PL/SQL过程。 注意: 使用环境变量QUERY_STRING 即表明这是个GET请求. 你也可以用POST方法传递参数。如何使用POST方法传递参数的例子,见下一节, \传递参数给PL/SQL\

传递参数给PL/SQL

为了执行和生成相应的HTML文档,一个PL/SQL过程通常需要参数。以下几节讨论一下一个PL/SQL开发员在参数如何得以传递到指定的PL/SQL例程方面应该理解的几个关键概念和要领。

这些关键概念和要领为:

从Web浏览器到Web Agent的参数获取 使用HTML表格传递参数 参数排序 参数缺省值

多个HTML表格字段使用同一个名字 过程重载

从Web浏览器到Web Agent的参数获取

依赖使用REQUEST_METHOD 的不同, 参数由Web浏览器到Web Listener的传递有两种方法:

QUERY_STRING 环境变量 -- 如果浏览器使用GET方法,Web Listener用此环 境变量传递参数给Web Agent。

标准输入 -- 如果使用POST方法,Web Listener使用标准输入传递参数到Web Agent。从Web Listener到Web Agent的参数传递方法对于PL/SQL过程这个参数的实际消费者来说是透明的。这是Oracle Web Agent的一个重要特性:PL/SQL程序员不需要知道使用何种方法,不需要关心从环境变量QUERY_STRING还是标准输入进行解析。PL/SQL程序员因而精力集中在他们最精通的方面:开发从Oracle数据库提取数据的逻辑,基于从Oracle Web Agent传来的预解析的参数。

建议:可能的情况下,使用POST。GET方法用于链接和非表格URL。对于HTML表格,可以有个选择。因为GET方法使用操作系统环境变量,QUERY_STRING有长度限制。 使用HTML表格传递参数

下例模拟前一节,除非它使用HTML表格使用POST REQUEST_METHOD。

Please type the name of the person you wish to search for:

To submit the query, press this button:

Submit Query. 上面的表格使得Oracle Web Listener与前一个例子的行为一样,只是不再使用

\填环境变量QUERY_STRING,Web Listener把\写到标准输出。这里当然假设了用户在表格的字段里输入了\。

注意:HTML输入变量的名字,此处为\,必须和与它相匹配的PL/SQL参数完全相同。 上述参数的接收的PL/SQL过程如下:

create or replace

procedure hockey_pass (person in varchar2) is n_assists integer; begin

select num_assists into n_assists

from hockey_stats where name=person;

htp.print(person||' has '||to_char(n_assists)||' assists this season'); end; 参数排序

总的来说, PL/SQL开发员不需要关心Oracle Web Agent以什么顺序从HTML表格或通过一个URL接收参数. 它仅在从一个表格字段传递多个值时才有关系。参见本节后面的\多个HTML表格字段使用相同的名字\。 参数缺省值

如果PL/SQL开发员不能保证对于特定的PL/SQL过程参数必然有从Web浏览器传来的值的话,建议给此参数一个缺省值,例如:

create or replace procedure showvals(a in varchar2 DEFAULT NULL, b in varchar2 DEFAULT NULL) is begin

htp.print('a = '||a||htp.br); htp.print('b = '||b||htp.br); end;

如果Web Agent收到一个调用过程showvals的请求,没有给\的值,\的值为\,如果过程定义中没有DEFAULT NULL子句,请求将得到如下错误信息: OWS-05111: Agent : no procedure matches this call OWA SERVICE: test_service PROCEDURE: showvals PARAMETERS: =========== B: Hello

通过为参数设缺省值,上述请求被正常输出: a = b = Hello

对于最终用户它看起来象: a = b = Hello

多个HTML表格字段使用同一个名字

有些情形下,人们想。为处理这种想用相同HTML字段即PL/SQL参数传递多个值的情况,可以用PL/SQL表创建值的数组。

要用相同HTML字段传递多个值的一种情况是HTML表格的\标记的使用。如果设参数SIZE为比1大的值,用户将能从同一个表格字段选择多个值。 另一种情况是人在单个表格字段选择一组相应的值:

-- QUERY_FORM prints an HTML page with all the columns for the -- specified table. Invoke the procedure from a Web Browser with -- a URL like:

http://yourhost:port_num/service_name/owa/query_form?the_table=emp create or replace procedure query_form(the_table in varchar2) is cursor cols is select column_name from user_tab_columns where table_name = upper(the_table); begin

htp.htmlOpen; htp.headOpen;

htp.htitle('Query the '||the_table||' table!'); htp.headClose;

htp.bodyOpen;

-- Use owa_util.get_owa_service path to automatically retrieve htp.formOpen(owa_util.get_owa_service_path||'do_query');

-- Put in the table as a hidden field to pass on to do_query htp.formHidden('the_table', the_table);

-- Put in a dummy value, as we cannot DEFAULT NULL a PL/SQL table. htp.formHidden('COLS', 'dummy'); for crec in cols loop

-- Create a checkbox for each column. The form field name -- will be COLS and the value will be the given column name. -- Will need to use a PL/SQL table to retrieve a set of -- values like this. Can use the owa_util.ident_arr type -- since the columns are identifiers. htp.formCheckbox('COLS',crec.column_name); htp.print(crec.column_name); htp.nl; end loop;

-- Pass a NULL field name for the Submit field; that way, a -- name/value pair is not sent in. Wouldn't want to do this -- if there were multiple submit buttons. htp.formSubmit(NULL, 'Execute Query'); htp.formClose; htp.bodyClose; htp.htmlClose; end;

调用此过程将带来如下的一个页面:

此例中,用户已经选择了查询EMPNO,ENAME,JOB,和SAL列 : 这里是处理此表格提交的过程:

-- DO_QUERY executes the query on the specified columns and -- tables.The OWA_UTIL.IDENT_ARR datatype is defined as:

-- -- type ident_arr is table of varchar2(30) index by binary_integer --

create or replace procedure do_query(the_table in varchar2, cols in owa_util.ident_arr) is column_list varchar2(32000); col_counter integer; ignore boolean; begin

-- For PL/SQL tables, have to just loop through until you hit -- no_data_found. Start the counter at 2 since we put in -- a dummy hidden field. col_counter := 2; loop

-- build a comma-delimited list of columns

column_list := column_list||cols(col_counter)||','; col_counter := col_counter + 1; end loop; exception

when no_data_found

then

-- strip out the last trailing comma

column_list := substr(column_list,1,length(column_list)-1); -- print the table - assumes HTML table support

ignore := owa_util.tablePrint(the_table, 'BORDER',

OWA_UTIL.HTML_TABLE, column_list); end;

选择按钮\后,用户将见到:

使用隐藏的站位变量作为第一个值是个好想法,如果你不能保证至少一个值被提交到PL/SQL表的话。其原因是不能为PL/SQL表设缺省值。并且,调用这个仅一个参数(the_table)的过程将导致Web Agent产生一个错误。

注意:Web Agent只可以传递基本类型为VARCHAR2的参数到PL/SQL表。这有个限制,PL/SQL类型VARCHAR2作为最大的PL/SQL数据类型,最大长度限制为32767字节。值在存储过程里被显式地转换到NUMBER, DATE,或LONG。(使用TO_NUMBER或TO_DATE-LONG不需转换)。 过程重载

PL/SQL允许开发员重载在PL/SQL包中的过程和函数(但不能是独立的函数和过程)。 create or replace package overload is

procedure proc1(charval in varchar2); procedure proc1(numval in number); end;

create or replace package body overload is procedure proc1(charval in varchar2) is begin

htp.print('The character value is '||charval);

end;

procedure proc1(numval in number);

htp.print('The number value is '||numval); end; end;

此机制可以被Web Agent利用,但要求重载的过程的数据类型不能有相同的参数名。 例如:

create or replace package overload is procedure proc1(val in varchar2); procedure proc1(val in number); end;

Oracle webserver中文介绍-第三章(续)

--------------------------------------------------------------------------------

当Web Agent试图判断调用哪些过程,它将不能分辨二者并生成错误。

这个限制受HTML-表格数据类型较少的影响,但不会有明显的限制,PL/SQL类型VARCHAR2作为最大的PL/SQL数据类型,最大长度限制为32767字节。值在存储过程里被显式地转换到NUMBER, DATE,或LONG。(使用TO_NUMBER或TO_DATE-LONG不需转换)。 存取CGI环境变量

Oracle Web Listener遵守通用网关接口(CGI)1.1说明书。因此,所有此说明书包含的CGI环境变量Oracle Web Listener都将传递给Web Agent。Web Agent也让PL/SQL访问所有的相关变量。

Web Agent有效的CGI环境变量见表3 - 2. Variable 变量 Variable Meaning 变量意义 AUTH_TYPE Method used to validate user 校验用户的类型。

GATEWAY_INTERFACE The revision of the CGI specification to which the server complies

服务器兼容的CGI说明书的版本。

HTTP_USER_AGENT The browser the client is using to send the request 客户端用来发送请求的浏览器。

PATH_INFO Extra path information given by the client 客户端给出的额外的路径信息。

PATH_TRANSLATED Translated version of PATH_INFO provided by server for mapping. This consists of the document root concatenated to the PATH_INFO. 服务器提供的映射用的PATH_INFO的翻译版本。

REMOTE_HOST Hostname making the request if it can be determined 发出请求的主机名,如果它可以判断的话

REMOTE_ADDR IP address of the remote host making the request 发出请求的远程主机IP地址

REMOTE_USER Used to authenticate user 用于鉴别用户

REMOTE_IDENT Set to the remote username retrieved from the server 设置由服务器检索出的远程用户名

SERVER_PROTOCOL Name and revision of the information protocol used in the request 请求使用的信息协议的名称和版本

SERVER_SOFTWARE Name and version of information server software answering the request

回答请求的信息服务器软件的名称和版本。

SERVER_NAME The server's hostname, or IP address 主机名或IP地址

SERVER_PORT Port number on which the server is running 服务器所运行的端口

SCRIPT_NAME Virtual path to the script being executed, used for self-referencing URL

将执行脚本的虚拟路径,用于自引用URL。 表 3 - 2. CGI 环境变量

这些环境变量可在PL/SQL里用函数owa_util.get_cgi_env获得。参见,\WebServer Developer's Toolkit\Oracle Web Agent 错误处理 Oracle Web Agent处理的错误有两种: application errors 应用错误 system errors 系统错误 应用错误

应用错误特指PL/SQL应用。程序员写的所有应用在生成相应输出的PL/SQL过程中应包括他们的例外处理。

因为Oracle Web Agent不读HTML输出来判断它的内容,所以错误处理是透明的。Web Agent 所关心的是是否PL/SQL生成HTML输出,操作是否成功。用户必须知道如何处理PL/SQL过程的例外信息。 系统错误

系统错误是由Oracle Web Agent自己检测到的。这些错误当Web Agent不能启动PL/SQL过程,或有存储过程未处理的PL/SQL例外,导致例外作为一个系统错误传播给Web Agent时发生。这导致一个标准HTML错误文档被返给浏览器。

例如,如果Oracle Web gent不能连接到Oracle7服务器,PL/SQL过程不能运行,发生一个系统错误。Web Agent有HTTP服务器返回一个缺省报错页面到浏览器,或者返回一个用户化的HTML报错页面(如果在配置Web Agent服务时指定了OWA_ERR_PAGE参数的话)。 Web Agent 如何知道生成什么报错页面

Web Agent检查OWA服务的配置的报错页面字段。如果在那里发现了值,Web Agent即在文件系统中寻找指定的页面。如果发现,页面被返回到Web客户端。如果寻找失败,缺省的报错信息被返回到Web客户端。

Creating Error Pages建立报错页面

Oracle WebServer允许管理员建立自定义的报错页面,用于一旦Web Agent遇到系统错误就返回该页。自定义报错页面的目的是告诉用户采取什么动作。

当Web Agent遇到系统错误时,每个服务只能返回一个自定义报错页面。 用任何你喜欢的文本或HTML编辑器来建立自定义的HTML报错页面。 以下是一个用户自定义的系统错误的HTML报错页面的例子:

Your Request Failed

Bob's Big Bulldozer Company could not process your request. Please try again later, or call us at 1-800-TRACTOR. Thanks, Bob

自定义的HTML报错页面建立以后,Web Agent服务配置文件里的OWA error page项必须反映新HTML报错页面的存储位置。使用Web Service管理页面来插入或更改OWA error page项。

必须为自定义的HTML报错页面指定完全路径。如果未指定路径,Web Agent将在Web Agent执行程序的目录下寻找。

详细信息见\建立和维护Web Agent 服务,\管理工具\。

Error Log File 出错日志文件

Oracle Web Agent保留了一个由OWA服务名和该服务的OWA Log目录值定义的错误日志文件。文件名为service_name.err。一旦Oracle Web Agent遇到一个错误,此文件中便增加一项。此错误日志记录了所有相关信息,例如日期,错误号和URL。

记住,每个Web Agent服务只有一个错误日志。然而如果Web Agent不能得出服务的名字,又未配置OWA_DEFAULT_SERVICE,则将错误写入缺省日志目录下的OWA.err文件中。 下面是一个错误日志的例子,以及文件中每一行的相应的意义:

Wed Jun 28 08:14:27 1995 /*时间戳*/

OWS-05100: Agent : unable to connect due to Oracle error 1017 ORA-01017: invalid username/password; logon denied /*错误栈*/

OWA SERVICE: HR /*Web Agent Service*/

PROCEDURE: hrinfo.emp /*调用的PL/SQL过程*/ PARAMETERS: /*过程使用的参数*/

============ ENAME: RayBorque

Oracle Web Agent 版本号

找出什么版本的Oracle Web Agent 安装在你的操作系统,可用以下过程: 在命令行输入: (仅UNIX) $ORACLE_HOME/ows/bin/owa -v

命令将返回如下结果(你的结果可能不同): Oracle Web Agent Release 1.0.0.0.0 第四章. Oracle WebServer 开发工具箱

本章描述组成Oracle WebServer工具箱的 超文本过程,超文本函数和实用程序。

Oracle Web Agent的主要目标之一就是PL/SQL程序员熟悉World Wide Web技术。从这一点,Oracle WebServer包括了由几个PL/SQL组成的开发包以以最小化程序员对HTML语法的要求。虽然程序员仍然要求有HTML的工作知识,但使用工具包,他们不需要在PL/SQL过程中写HTML标记实际语法的的硬编码。例如,程序员要求实现一个必要的锚,但他不需要知道生成一个锚的字符的实际序列。

Oracle WebServer开发包包括下列PL/SQL包: 超文本过程 (HTP)

一个超文本过程 在HTML文档中生成包含与其名字相对应的HTML标记的一行。例如,htp.anchor过程生成一个锚标记。HTP包是三者之中最常用的包。 超文本函数 (HTF)

一个超文本函数返回与其名字相应的HTML标记。然而, 因为HTML标记不能通过Web Agent,所以不能直接调用HTF函数本身。HTF函数的输出必须通过htp.print,才能真正成为HTML文档的一部分。所以,下面一行:

htp.print(htf.italic('Title')); 功能上等价于 :

htp.italic('Title');

每个超文本函数(HTF)有一个相对应的超文本过程(HTP)。所以HTF函数通常仅用于编程时需要嵌套调用的情况,例如:

htp.header(1,htf.italic('Title')); 此例中,'htf.italic'将生成如下字符串: Title

该字符串传给过程'htp.header'后,在格式化的HTML文档中将出现如下行:

Title

OWA Utilities (OWA_UTIL) OWA实用程序

一个有用的实用过程和函数的集合。他们的目的包括从在HTML页上打印一个符号标记到简便地把Oracle表格式化为HTML格式。 OWA

一个仅供Oracle Web Agent自己调用的过程集合。此包中的任何子程序都不能在用户 开发的PL/SQL中直接调用。

4.1 安装Oracle WebServer开发者工具箱 开发者工具箱的安装,使用OWA服务管理表格。在服务建立和修改页面上均有是否安装开发者工具箱的检查框选择。选择它并提交表格将做如下事情:

将CONNECT和RESOURCE角色授权给OWA数据库用户。 执行SQL脚本OWAINS.SQL,该文件可以在OWS管理目录下找到。若手动运行,应使用 SQL*DBA或Server Manager。若想在SQL*Plus里运行,看脚本头去找步骤。 脚本 OWAINS.SQL 将安装开发者工具箱的所有包。

优化多服务的安装

如果你的站点有多个Web Agent服务, 你可以按照下列步骤来最小化存储空间的占用量并增强PL/SQL的性能:

1.在一个数据库用户的模式下安装开发者工具箱,这个用户就是工具箱的拥有者。

2.从其他Web Agent服务的OWA数据库用户的模式下删除工具箱的PL/SQL包,如果你已经安装了这些包的话。 connect /

drop package HTF; drop package HTP;

drop package OWA_UTIL; drop package OWA;

3. 向其他Web Agent服务的OWA数据库用户授与在这些PL/SQL包上的EXECUTE权限。 connect /

grant execute on HTF to ; grant execute on HTP to ;

grant execute on OWA_UTIL to ; grant execute on OWA to ;

4. 在所有的OWA数据库用户中建立工具箱PL/SQL包的同义词。 connect /

create synonym HTF for .HTF; create synonym HTP for .HTP;

create synonym OWA_UTIL for .OWA_UTIL; create synonym OWA for .OWA; Security Note 安全要点

PL/SQL 过程以PL/SQL代码的创建者的权限运行。对于Developer's Toolkit, 这只关系到owa_util包. 两个子程序, showsource和tableprint,存取用户的数据。此包上的执行权限只能授给允许访问owa_util拥有者的表,视图和PL/SQL存储代码的拥护。

如果你的安装要考虑安全问题,为每个OWA数据库用户安装独立的owa_util包。 作此事的脚本如下: PUBUTIL.SQL PRIVUTIL.SQL

它们都在OWS管理目录下,应按所列的顺序执行。

Oracle webserver中文介绍-第四章(续2)

--------------------------------------------------------------------------------

List Tags 列表标记

List tags allow you to display information in any of the following ways: ordered: these lists have numbered items

unordered: these lists have bullets to mark each item definition: these lists alternate a term with its definition

Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). htp.listHeader

语法 htp.listHeader (ctext, cattributes);

作用 Prints an HTML tag at the beginning of the list 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.listItem

语法 htp.listItem (ctext, cclear, cdingbat, csrc, cattributes); 作用 Prints an HTML tag that formats a listed item. 参数 ctext in varchar2 DEFAULT NULL cclear in varchar2 DEFAULT NULL cdingbat in varchar2 DEFAULT NULL csrc in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates  ctext htp.ulistOpen

语法 htp.ulistOpen (cclear, cwrap, cdingbat, csrc, cattributes);

作用 Prints an HTML tag that is used to open an unordered list that presents listed items separated by white space and marked off by bullets. 参数 cclear in varchar2 DEFAULT NULL cwrap in varchar2 DEFAULT NULL

cdingbat in varchar2 DEFAULT NULL csrc in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates

htp.ulistClose 语法 htp.ulistClose;

作用 Prints an HTML tag that ends the unordered list. 参数 none Generates

htp.olistOpen

语法 htp.olistOpen (cclear, cwrap, cattributes);

作用 Prints an HTML tag that is used to open an ordered list that presents listed items marked off with numbers. 参数 cclear in varchar2 DEFAULT NULL cwrap in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates

htp.olistClose 语法 htp.olistClose;

作用 Prints an HTML tag that ends an ordered list. 参数 none Generates

htp.dlistOpen

语法 htp.dlistOpen (cclear, cattributes);

作用 Prints an HTML tag that starts a definition list 参数 cclear in varchar2 DEFAULT NULL

cattributes in varchar2 DEFAULT NULL Generates htp.dlistClose 语法 htp.dlistClose

作用 Prints an HTML tag that Ends a definition list 参数 none Generates htp.dlistDef

语法 htp.dlistDef (ctext, cclear, cattributes);

作用 Prints an HTML tag that is used to insert terms, and their corresponding definitions in an indented list format. The htp.dlistTerm must immediately follow this tag.

参数 ctext in varchar2 DEFAULT NULL clear in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates

ctext

htp.dlistTerm

语法 htp.dlistTerm (ctext, cclear, cattributes);

作用 Prints an HTML tag used to insert the definition term inside the definition list. This tag must immediately follow the htp.dlistDef. 参数 ctext in varchar2 DEFAULT NULL cclear in varchar2 DEFAULT NULL

cattributes in varchar2 DEFAULT NULL Generates

ctext

htp.menulistOpen

语法 htp.menulistOpen;

作用 Prints an HTML tag that begins a list that presents one line per item, and appears more compact than an unordered list. The htp.listItem will follow this tag. 参数 none Generates

htp.menulistClose

语法 htp.menulistClose;

作用 Prints an HTML tag that ends a menu list. Paramenters none

Generates

htp.dirlistOpen

语法 htp.dirlistOpen;

作用 Prints an HTML tag that begins a directory list. This presents information in a list of items that contain up to 20 characters. Items in this list are typically arranged in columns, typically 24 characters wide. The

 or htp.listItem must appear directly after you use this tag. 参数 none Generates

htp.dirlistClose

语法 htp.dirlistClose;

作用 Prints an HTML tag that closes the directory list tag, htp.dirlistOpen. 参数 none Generates

--------------------------------------------------------------------------------

Character Format Tags

The character format tags are used to specify or alter the appearance of the marked text. Character format tags have opening and closing elements, and affect only the text that they surround.

Character format tags give hints to the browser as to how a character or character string should appear, but each browser determines its actual appearance. Essentially, they place text into categories such that all text in a given category is given the same special treatment, but the browser determines what that treatment is. For example, the HTML string Here is some text might appear as bold in some browsers, or might flash instead.

If a specific text attribute, such as bold is desired, a physical format tag may be necessary. See the section, \Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). htp.cite

语法 htp.cite (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as a citation. Usually rendered as italics. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.code

语法 htp.code (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as an example of code output. Usually rendered in monospace format, e.g. Courier. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.emphasis

语法 htp.emphasis (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as requiring typographic emphasis. This tag is equivalent to htp.em. Usually rendered as italics. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.em

Alias for htp.emphasis htp.keyboard

语法 htp.keyboard (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as text typed in by the user.,which is usually rendered as monospace. This tag is equivalent to htp.kbd.

参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.kbd

Alias for htp.keyboard htp.sample

语法 htp.sample (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as a sequence of literal characters that must be typed in the exact sequence in which they appear. Usually rendered as monospace font. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.strong

语法 htp.strong (ctext, cattributes); 作用 Prints a pair of HTML tags that specify the text they surround as needing strong typographic emphasis. Usually rendered as bold. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.variable

语法 htp.variable (ctext, cattributes);

作用 Prints a pair of HTML tags that specify the text they surround as a variable name, or a variable that might be entered by the user. Usually rendered as italics. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext

--------------------------------------------------------------------------------

Physical Format Tags 物理格式标记

The physical format tags are used to specify the format of the marked text. Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). htp.bold

语法 htp.bold (ctext, cattributes); 作用 Prints a pair of HTML tags that specify the text they surround is to be rendered as boldface.

参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext

htp.italic

语法 htp.italic (ctext, cattributes); 作用 Prints a pair of HTML tags that specify the text they surround is to be rendered as italics.

参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext htp.teletype

语法 htp.teletype (ctext, cattributes); 作用 Prints a pair of HTML tags that specify the text they surround is to be rendered in a fixed width typewriter font, e.g. Courier. 参数 ctext in varchar2

cattributes in varchar2 DEFAULT NULL Generates ctext

--------------------------------------------------------------------------------

Form Tags 表单标记

The form tags are used to create and manipulate an HTML form. Forms are used to allow interactive data exchange between a Web Browser and a CGI program. Forms can have the following types of elements:

Input: used for a large variety of types of input fields, for example: single line text

single line password fields checkboxes radio buttons submit buttons

Text area: used to create a multi-line input field. Select: used to allow the user to chose one or more of a set of alternatives described by textual labels. Usually rendered as a pulldown, pop up, or a fixed size list. Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). htp.formOpen

语法 htp.formOpen (curl, cmethod);

作用 Prints an HTML tag that starts the form. The curl value is required and is the URL of the CGI script, normally owa, to which the contents of the Form will be sent. The method is either \参数 curl in varchar2

cmethod in varchar2 DEFAULT 'POST' Generates htp.formClose

语法 htp.formClose;

作用 Prints an HTML tag that closes the tag

参数 none Generates

htp.formCheckbox

语法 htp.formCheckbox (cname, cvalue, cchecked, cattributes);

作用 Prints an HTML tag that inserts a checkbox which the user can toggle off or on.

参数 cname in varchar2

cvalue in varchar2 DEFAULT 'on' cchecked in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL

Generates htp.formHidden

语法 htp.formHidden (cname, cvalue, cattributes);

作用 Prints an HTML tag that sends the content of a field along with a submitted form. The field is not visible to the end user. 参数 cname in varchar2

cvalue in varchar2 DEFAULT NULL

cattributes in varchar2 DEFAULT NULL Generates htp.formImage

语法 htp.formImage (cname, csrc, calign, cattributes);

作用 Prints an HTML tag that creates an image field that can be clicked on causing the Form to be immediately submitted. The coordinates of the selected point are measured in pixels, and returned (along with other contents of the form) in two name/value pairs. The x-coordinate is submitted under the name of the field with \and the y-coordinate with the \is ignored. The image itself is specified by the CSRC attribute. 参数 cname in varchar2 csrc in varchar2

calign in varchar2 DEFAULT NULL

cattributes in varchar2 DEFAULT NULL;

Generates htp.formPassword

语法 htp.formPassword (cname, csize, cmaxlength, cvalue, cattributes);

作用 Prints an HTML tag that creates a single line text entry field. Text will not be displayed as it is entered. When the user enters a password, characters are represented by asterisks on single line text entry field. 参数 cname in varchar2 csize in varchar2

cmaxlength in varchar2 DEFAULT NULL cvalue in varchar2 DEFAULT NULL

cattributes in varchar2 DEFAULT NULL Generates htp.tableRowOpen

语法 htp.tableRowOpen (calign, cvalign,cdp, cnowrap, cattributes); 作用 Prints an HTML tag that inserts a row tag into a table. 参数 calign in varchar2 DEFAULT NULL

cvalign in varchar2 DEFAULT NULL cdp in varchar2 DEFAULT NULL cnowrap in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates htp.tableRowClose 语法 htp.tableRowClose;

作用 Prints an HTML tag that ends a row in a table. 参数 none Generates htp.tableHeader

语法 htp.tableHeader (cvalue, calign, cdp, cnowrap, crowspan, ccolspan, cattributes); 作用 Prints an HTML tag that inserts a table header. 参数 cvalue in varchar2 DEFAULT NULL calign in varchar2 DEFAULT NULL cdp in varchar2 DEFAULT NULL cnowrap in varchar2 DEFAULT NULL crowspan in varchar2 DEFAULT NULL ccolspan in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generates

cvaluehtp.tableData

语法 htp.tableData (cvalue, calign, cdp, cnowrap, cattributes);

作用 Prints an HTML tag that inserts data into the rows and columns of a selected table. 参数 cvalue in varchar2 DEFAULT NULL

calign in varchar2 DEFAULT NULL cdp in varchar2 DEFAULT NULL cnowrap in varchar2 DEFAULT NULL cattributes in varchar2 DEFAULT NULL Generate

本文来源:https://www.bwwdw.com/article/fo7o.html

Top