Oracle Web Listener?@是一个高性能,可伸缩, 可移植的 HTTP 服务器,支持要求迅速响应的的高流量的 Web 应用。 Oracle Web Listener专为实现企业网络或全球因特网上的分布式信息系统而设计. _u _[E'@
E]Qi%F
从用户的角度看,Web 是一个文档或页面的集合,他们包含了文字,图象和指向其他页面的链接。通过点,单击并浏览这些链接,用户可以立即访问一个分布的信息系统。Oracle Web Listener 融合了信息检索和超文本技术来建立一个强大的全球信息系统。 f=k5NoA
]+[ k
Oracle Web Listener 工作在简单的客户机-服务器模式下。客户端向 Oracle Web Listener 发出请求。Listener 通过读取URL来解释请求,找到或生成所请求的信息, 并将信息返回给通过表格进行请求的客户机。 "w \{;
B>.%$ 'Z{
在同一台机器上可以运行多个使用各自专有端口的 Oracle Web Listeners。使用多个 Web Listeners 是在多个不同应用之间平衡负载的好方法。 x1{"*!dK
[,@eJ?b
Oracle Web Listeners 与其客户端通讯所使用的语言是超文本传输协议(HTTP)。Web Listeners实现的是IETF HTTP工作组定义的HTTP协议的版本1.0。所有的Web客户端为了能收发超媒体文档,必须能讲HTTP协议。 n|F 2.g(
&o*23<!X/
HTTP协议是一种应用级的协议,轻便并能满足分布式的协同工作的超媒体信息系统所要求的速度。它是一种通用的,无状态的面向对象的协议,通过扩展它的请求方法(命令)可以用于很多系统。 dG6!8)
P8 mV@2
Oracle Web Listener 的特性 V|6\ @/O
Oracle Web Listener 的配置参数 "]GQUb!Z
2.1 Oracle Web Listener 的特性 *N(yUiH;
'~JmAP."
Oracle Web Listener 包含了一定数目的特性以在不同的环境下增强其性能和扩展其使用能力。 t6$Y+x!4
h@w]K/Qf
High Performance Architecture 高性能的体系结构为使性能最大化,Oracle Web Listener 被设计为作为通过带单线索的单进程运行的的异步引擎,与大多数HTTP服务器不同,他们每建立一个新连接就启动 PKsx\Ts2x
mxpjuU2
一个新进程或线程。这显著地减少了服务一个请求所要求的时间,降低了监听机资源的使用,如果是在重负载下提供高性能的话。 >^V'Drm:`
#A^5L|<
File Caching in Memory 文件内存缓存Oracle Web Listener 允许在内存中缓存一个可配置的经常存取的文件集。当这些文件被客户端访问时,将能提供很好的性能。 w59l{
#LF`>[&0
在当前版本的Oracle Web Listener 中,进行内存缓存的文件列表由WebServer管理员决定并能手工配置。管理员应定期分析监听程序日志以决定那些文件性缓存并相应的修改设置。 "!XDFr<*
a480.g?^
Memory Mapping of Files 文件内存映射在支持此特性的操作系统上,文件被访问时,Oracle Web Listener 自动将他们映射到内存地址上(除非他们被永久的缓存在内存中了)。这种情况下,文件将象是从内存中加载的,允许多于一个连接访问同一文件而避免重复读取磁盘。另外,操作系统通常在前一段传输后,预读内存缓存文件的下一段,所以即使是单一连接的情形下,也能进一步提高性能。Directory Mapping 目录映射Oracle Web Listener 支持将在Web上外部表现在URL中的路径名映射到Web Listener 机器上的内部位置。这使得即使Web Listener的磁盘被重新规划了,对客户端仍是一致的。外部可见(虚拟)目录到本地文件系统中的物理目录的指定映射是管理员可配置的。 }XyLb`[ g
L9U7#euX e
例如:URL Sl":Y!
可以映射为系统 www.oracle.com 的目录 /disk1/ products: v&*g Iv
/disk1/products/info.html ,.UN}[
Kyv0-vx
如果一次重组时,将目录 products 移到 /disk3, 管理员在Web listener 配置文件(owl.cfg), 中重新配置虚目录 products 指向新位置 /disk3/products,而Web客户则完全不知道这一改变. gKe rx1
x_71g4+
注意:Web Listener需要重新载入以识别改动。有关重启Web Listener的信息,见本章后面的"Web Listener Control Utility" 。 f- n|x:D4J
x97TL ;!
Language Extensions 语言扩展名 Ck[yb(@Z
Oracle Web Listener支持文件按照不同的字符集存储以适应所使用的语言。Web Listener可以解释文件扩展名以得出文件中数据的类型(如HTML数据)和文件是以何种语言写的。语言影射特性有管理员控制,并允许客户端访问以与不同的语言相应的字符集书写的文件。 k {J@Ai"
-S. f }q
指定的文件扩展名与语言和数据类型的影射关系有Web Listener配置文件控制。 m$%;HMs0
,9 s%W a
HTTP Protocol Negotiation Features HTTP协议协商特性 u'q%Q+
HTTP的特点之一是客户端和HTTP服务器交换有关他们能传输和能解释的数据类型的信息。这些协商特性允许使用不同的数据类型和语言构造系统。 e>|nEjO5z
<wZUR|Bu
当一个Web客户机请求一个对象时,它可以指定它能接收何种类型的数据并表示指定类型的配置。 Web Listener可以用此信息发出相应格式化的数据到客户机,如果 Web Listener上储存着不止一种格式的话。这一过程叫作HTTP类型协商,OWL完全支持它。例如,文档中包含行中的图象,它可以以或者gif或者JPEG的格式传输到Web客户端。 U='TiV
XqP]V}]:
Oracle Web Listener 也支持类似的概念来协商文挡应以哪种语言显示给特定的用户。 文档可能以多种语言存储(例如英语和加拿大法语),如果客户端表明了配置将发送适宜的文档拷贝给他。这极大简化了多语站点以的维护,因为不需要为不同的语言维护重复的URL或分离的目录。 - kK: Oq;@
j=I h%z=
Common Gateway Interface 通用网关接口 (CGI) `1YD dN
通用网关接口(CGI)版本1.1是HTTP服务器用以执行一个程序产生HTML输出的标准技术。这种技术提供了动态内容而不是来自磁盘文件的静态内容。Oracle Web Listener与CGI 1.1完全兼容。 5C#^I kV
.hG3j1
当一个请求进来而Web Listener识别出该请求将执行一个CGI应用,将创建一个单独的进程执行这一操作。Web Listener与该进程保持通讯,将Web客户端的输入传过去,检索其生成的用于客户端屏幕显示的HTML输出。 +7<k UhFC
fG=qA%yHc
Web Listener管理员可以配置指定的目录以包含CGI程序用以运行而不是传输文件。这些都可以用Web Listener配置文件来做到。有关WEb Listener配置文件,参见本章后面的"Configuration Parameters,"。 \!~,vJ
*Am=3a0
CGI Application Execution CGI程序执行 dhRVp;@DW
当客户端向Oracle Web Listener发出一个URL请求,URL的路径部分被分析以决定它是否代表一个包含文件的目录(通常情况下)。 这些文件被立刻发给客户端,对于包含CGI应用程序的目录,有时被作为脚本引用,他们必须被作为单独的程序执行以生成发往客户端的输出。 ?d$O#NVIPP
efbSC3]x|
CGI应用执行技术是Web的关键特性之一。它允许多个信息源的集成。 Oracle Web Agent即是一种可用此项技术访问的的CGI应用。 m6i/D9K/
f&w>m&?8
一旦监听程序发现URL代表一个CGI应用,它将解释此URL并分解出路径信息和参数,传给正在启动的CGI应用。 :Nxw5wV
i@4y+Vc
CGI程序的URL可分为3部分: x<[:cb
9GEBM?BU[*
virtual path 虚拟路径 Y%#k5<{
extra path information 另外的路径信息 o5<"]1/.{
query string 查询字符串 3A[yXJ=!e
The syntax is as follows: 语法如下: u& i"q$f
8w"MK)U^
virtual_path extra_path_information?query_string &abz0| 9x
virtual path AP#)9GKai
虚拟路径 模拟一个你用于访问常规文档或图象的路径。就是说,它为服务器指向一个含有你想执行的CGI程序的文件。 yIEn
FktL~34 e
extra path information R@5L%9<v
另外的路径信息 你将在URL中附加在程序名后面的额外信息。另外的路径信息是一个可选项。它可以用于传递常量信息给那些依赖客户端输入的脚本。它也可以用于访问服务器的虚拟-物理路径的转换机制。 OMJC VD~
^f)O4-e>)
query string ((CY Q,'
查询字符串 是URL的另一个可选项。它既可以显式地由超文本锚给出,也可以是来自用户在带ISINDEX标记的HTML文件中的搜索对话框中的输入,或者来自HTML表格。 &u}d0DU4
2Y] :Aa
来自URL或其他资源的用户输入 当数据在搜索对话框或文本输入表格中输入时,数据将使用URL encoding进行编码。此编码依据以下规则编码: vqZU1 A}
XUgtK
空格变成加号+ q>f R- N
任何一个字符都可以转义为%xx格式的序列,其中 x 是十六进制数字。字符由转换两位十六进制数成的代表字符的0-255的数字表示。 z!rmhUByX
|mHJ@y
如果来自一个由ISINDEX标记的搜索对话框结果,以上的转换将直接进行。另外,如果你想避免自己进行次转换,你的CGI程序可以在命令行上接收已完全转换的信息。 =Mxs. Y
@H"e:]nw
如果数据来自HTML表格,数据变量的位置依赖于你的HTML文档中表格标记中指定的方法属性。如果使用GET方法,这些信息来自变量QUERY_STRING。如果使用POST方法,这些信息使用标准输入发送给你的程序。 tVC`2`'CBU
5,JOyhgx
数据以此格式提供: hW1C%*0y
\n*fk@8>
name1=value1&name2=value2.....&nameN=valueN nJ@y4{& >
如果在编码后的数据中有任何等号(=)或与号(&),他们被使用以上规则编码。为了正确地解码数据,NAME=VALUE对不应被分割直至与号,每个对应分为名称和值,URL编码将对每一个对进行。 uSF|{(RtSk
p-;m'\~:
当表格提交时,你通常使用表格项出现的顺序来决定你的CGI程序接收NAME=VALUE对的顺序。然而你不能依赖这种行为。不同的表格元素有他们自己的方式来决定什么值将和他们给定的名字相联系。所有文本性的输入区使用用户的键入作为值。 'jj7":29c
,?FsizgE&
Radio button圆型钮使用使能钮的值 z36hlw"o{
Checkboxes检查框不打叉时,他们或者使用空字符串或者他们的名字根本不在加密表格数据中出现。隐藏的表格项可以用于发送常量或状态信息给你的脚本。 7P> pB14.
E]Qi%F
从用户的角度看,Web 是一个文档或页面的集合,他们包含了文字,图象和指向其他页面的链接。通过点,单击并浏览这些链接,用户可以立即访问一个分布的信息系统。Oracle Web Listener 融合了信息检索和超文本技术来建立一个强大的全球信息系统。 f=k5NoA
]+[ k
Oracle Web Listener 工作在简单的客户机-服务器模式下。客户端向 Oracle Web Listener 发出请求。Listener 通过读取URL来解释请求,找到或生成所请求的信息, 并将信息返回给通过表格进行请求的客户机。 "w \{;
B>.%$ 'Z{
在同一台机器上可以运行多个使用各自专有端口的 Oracle Web Listeners。使用多个 Web Listeners 是在多个不同应用之间平衡负载的好方法。 x1{"*!dK
[,@eJ?b
Oracle Web Listeners 与其客户端通讯所使用的语言是超文本传输协议(HTTP)。Web Listeners实现的是IETF HTTP工作组定义的HTTP协议的版本1.0。所有的Web客户端为了能收发超媒体文档,必须能讲HTTP协议。 n|F 2.g(
&o*23<!X/
HTTP协议是一种应用级的协议,轻便并能满足分布式的协同工作的超媒体信息系统所要求的速度。它是一种通用的,无状态的面向对象的协议,通过扩展它的请求方法(命令)可以用于很多系统。 dG6!8)
P8 mV@2
Oracle Web Listener 的特性 V|6\ @/O
Oracle Web Listener 的配置参数 "]GQUb!Z
2.1 Oracle Web Listener 的特性 *N(yUiH;
'~JmAP."
Oracle Web Listener 包含了一定数目的特性以在不同的环境下增强其性能和扩展其使用能力。 t6$Y+x!4
h@w]K/Qf
High Performance Architecture 高性能的体系结构为使性能最大化,Oracle Web Listener 被设计为作为通过带单线索的单进程运行的的异步引擎,与大多数HTTP服务器不同,他们每建立一个新连接就启动 PKsx\Ts2x
mxpjuU2
一个新进程或线程。这显著地减少了服务一个请求所要求的时间,降低了监听机资源的使用,如果是在重负载下提供高性能的话。 >^V'Drm:`
#A^5L|<
File Caching in Memory 文件内存缓存Oracle Web Listener 允许在内存中缓存一个可配置的经常存取的文件集。当这些文件被客户端访问时,将能提供很好的性能。 w59l{
#LF`>[&0
在当前版本的Oracle Web Listener 中,进行内存缓存的文件列表由WebServer管理员决定并能手工配置。管理员应定期分析监听程序日志以决定那些文件性缓存并相应的修改设置。 "!XDFr<*
a480.g?^
Memory Mapping of Files 文件内存映射在支持此特性的操作系统上,文件被访问时,Oracle Web Listener 自动将他们映射到内存地址上(除非他们被永久的缓存在内存中了)。这种情况下,文件将象是从内存中加载的,允许多于一个连接访问同一文件而避免重复读取磁盘。另外,操作系统通常在前一段传输后,预读内存缓存文件的下一段,所以即使是单一连接的情形下,也能进一步提高性能。Directory Mapping 目录映射Oracle Web Listener 支持将在Web上外部表现在URL中的路径名映射到Web Listener 机器上的内部位置。这使得即使Web Listener的磁盘被重新规划了,对客户端仍是一致的。外部可见(虚拟)目录到本地文件系统中的物理目录的指定映射是管理员可配置的。 }XyLb`[ g
L9U7#euX e
例如:URL Sl":Y!
可以映射为系统 www.oracle.com 的目录 /disk1/ products: v&*g Iv
/disk1/products/info.html ,.UN}[
Kyv0-vx
如果一次重组时,将目录 products 移到 /disk3, 管理员在Web listener 配置文件(owl.cfg), 中重新配置虚目录 products 指向新位置 /disk3/products,而Web客户则完全不知道这一改变. gKe rx1
x_71g4+
注意:Web Listener需要重新载入以识别改动。有关重启Web Listener的信息,见本章后面的"Web Listener Control Utility" 。 f- n|x:D4J
x97TL ;!
Language Extensions 语言扩展名 Ck[yb(@Z
Oracle Web Listener支持文件按照不同的字符集存储以适应所使用的语言。Web Listener可以解释文件扩展名以得出文件中数据的类型(如HTML数据)和文件是以何种语言写的。语言影射特性有管理员控制,并允许客户端访问以与不同的语言相应的字符集书写的文件。 k {J@Ai"
-S. f }q
指定的文件扩展名与语言和数据类型的影射关系有Web Listener配置文件控制。 m$%;HMs0
,9 s%W a
HTTP Protocol Negotiation Features HTTP协议协商特性 u'q%Q+
HTTP的特点之一是客户端和HTTP服务器交换有关他们能传输和能解释的数据类型的信息。这些协商特性允许使用不同的数据类型和语言构造系统。 e>|nEjO5z
<wZUR|Bu
当一个Web客户机请求一个对象时,它可以指定它能接收何种类型的数据并表示指定类型的配置。 Web Listener可以用此信息发出相应格式化的数据到客户机,如果 Web Listener上储存着不止一种格式的话。这一过程叫作HTTP类型协商,OWL完全支持它。例如,文档中包含行中的图象,它可以以或者gif或者JPEG的格式传输到Web客户端。 U='TiV
XqP]V}]:
Oracle Web Listener 也支持类似的概念来协商文挡应以哪种语言显示给特定的用户。 文档可能以多种语言存储(例如英语和加拿大法语),如果客户端表明了配置将发送适宜的文档拷贝给他。这极大简化了多语站点以的维护,因为不需要为不同的语言维护重复的URL或分离的目录。 - kK: Oq;@
j=I h%z=
Common Gateway Interface 通用网关接口 (CGI) `1YD dN
通用网关接口(CGI)版本1.1是HTTP服务器用以执行一个程序产生HTML输出的标准技术。这种技术提供了动态内容而不是来自磁盘文件的静态内容。Oracle Web Listener与CGI 1.1完全兼容。 5C#^I kV
.hG3j1
当一个请求进来而Web Listener识别出该请求将执行一个CGI应用,将创建一个单独的进程执行这一操作。Web Listener与该进程保持通讯,将Web客户端的输入传过去,检索其生成的用于客户端屏幕显示的HTML输出。 +7<k UhFC
fG=qA%yHc
Web Listener管理员可以配置指定的目录以包含CGI程序用以运行而不是传输文件。这些都可以用Web Listener配置文件来做到。有关WEb Listener配置文件,参见本章后面的"Configuration Parameters,"。 \!~,vJ
*Am=3a0
CGI Application Execution CGI程序执行 dhRVp;@DW
当客户端向Oracle Web Listener发出一个URL请求,URL的路径部分被分析以决定它是否代表一个包含文件的目录(通常情况下)。 这些文件被立刻发给客户端,对于包含CGI应用程序的目录,有时被作为脚本引用,他们必须被作为单独的程序执行以生成发往客户端的输出。 ?d$O#NVIPP
efbSC3]x|
CGI应用执行技术是Web的关键特性之一。它允许多个信息源的集成。 Oracle Web Agent即是一种可用此项技术访问的的CGI应用。 m6i/D9K/
f&w>m&?8
一旦监听程序发现URL代表一个CGI应用,它将解释此URL并分解出路径信息和参数,传给正在启动的CGI应用。 :Nxw5wV
i@4y+Vc
CGI程序的URL可分为3部分: x<[:cb
9GEBM?BU[*
virtual path 虚拟路径 Y%#k5<{
extra path information 另外的路径信息 o5<"]1/.{
query string 查询字符串 3A[yXJ=!e
The syntax is as follows: 语法如下: u& i"q$f
8w"MK)U^
virtual_path extra_path_information?query_string &abz0| 9x
virtual path AP#)9GKai
虚拟路径 模拟一个你用于访问常规文档或图象的路径。就是说,它为服务器指向一个含有你想执行的CGI程序的文件。 yIEn
FktL~34 e
extra path information R@5L%9<v
另外的路径信息 你将在URL中附加在程序名后面的额外信息。另外的路径信息是一个可选项。它可以用于传递常量信息给那些依赖客户端输入的脚本。它也可以用于访问服务器的虚拟-物理路径的转换机制。 OMJC VD~
^f)O4-e>)
query string ((CY Q,'
查询字符串 是URL的另一个可选项。它既可以显式地由超文本锚给出,也可以是来自用户在带ISINDEX标记的HTML文件中的搜索对话框中的输入,或者来自HTML表格。 &u}d0DU4
2Y] :Aa
来自URL或其他资源的用户输入 当数据在搜索对话框或文本输入表格中输入时,数据将使用URL encoding进行编码。此编码依据以下规则编码: vqZU1 A}
XUgtK
空格变成加号+ q>f R- N
任何一个字符都可以转义为%xx格式的序列,其中 x 是十六进制数字。字符由转换两位十六进制数成的代表字符的0-255的数字表示。 z!rmhUByX
|mHJ@y
如果来自一个由ISINDEX标记的搜索对话框结果,以上的转换将直接进行。另外,如果你想避免自己进行次转换,你的CGI程序可以在命令行上接收已完全转换的信息。 =Mxs. Y
@H"e:]nw
如果数据来自HTML表格,数据变量的位置依赖于你的HTML文档中表格标记中指定的方法属性。如果使用GET方法,这些信息来自变量QUERY_STRING。如果使用POST方法,这些信息使用标准输入发送给你的程序。 tVC`2`'CBU
5,JOyhgx
数据以此格式提供: hW1C%*0y
\n*fk@8>
name1=value1&name2=value2.....&nameN=valueN nJ@y4{& >
如果在编码后的数据中有任何等号(=)或与号(&),他们被使用以上规则编码。为了正确地解码数据,NAME=VALUE对不应被分割直至与号,每个对应分为名称和值,URL编码将对每一个对进行。 uSF|{(RtSk
p-;m'\~:
当表格提交时,你通常使用表格项出现的顺序来决定你的CGI程序接收NAME=VALUE对的顺序。然而你不能依赖这种行为。不同的表格元素有他们自己的方式来决定什么值将和他们给定的名字相联系。所有文本性的输入区使用用户的键入作为值。 'jj7":29c
,?FsizgE&
Radio button圆型钮使用使能钮的值 z36hlw"o{
Checkboxes检查框不打叉时,他们或者使用空字符串或者他们的名字根本不在加密表格数据中出现。隐藏的表格项可以用于发送常量或状态信息给你的脚本。 7P> pB14.
Oracle WebServer是一个与Oracle7 Server紧密集成的HTTP服务器,能够由存储在 Oracle数据库的数据建立动态HTML文件。当数据改变时,这些HTML文件也自动更新,而不需要站点管理员的参与。这种方法用动态地实时地反映基于Oracle7服务器的商 务系统中的当前数据,而不是当今大多数站点上可见到的静态的或不变的数据显示。 _ 7D\z?*X
IXQ9vj u
商务数据是存储在oracle7数据库中的。它在服务器中被格式化为Web文档,然后传输给Web客户机。所有数据只存储一次,依据Web上的使用需要而定期进行“快照”。 - PP C
d 7?,^m\i0
构成Oracle WebServer的各部分协同工作,使得投递静态和动态信息均为可能。 pSv/;l
.s7r`*d-
Oracle WebServer的组成部分 S[E2u<T[
Oracle WebServer的组成部分如下: bfQ,wAbl
Vd>dUkX'
Oracle Web Listener. Oracle Web监听程序接收使用任何浏览器的用户发出的请求。对于静态(基于文件的)页面请求被监听进程立即处理,其功能即是一个HTTP 服务器。 +L\b(25
yv#Xe1I
Oracle Web Agent. Oracle Web 代理处理来自拥护的对于动态页面的请求。它将连接转向Oracle7 Server, 调用请求的过程,并将结果HTML文件返回浏览器。 uBM)SmZU
Bu( kv
Oracle WebServer Developer''s Toolkit. Oracle WebServer 开发者工具箱是一个帮助用户创建生成动态HTML文件的过程的集合。 WZ*_G&
hHzOs'Ah
Oracle7 Server. Oracle7 Server 为关系型表的数据和所有用于创建HTML页面的程序逻辑提供存储。 #)*E&C2<
peCI:k
他们中的每个部分和操作将在以后的章节中详细描述。 h[ RD &,
. %4Xo
1.1 The Oracle Web Listener监听程序 m6_(Z_Wmq
+?,r Bs
Oracle Web 监听程序是个商业品质级的HTTP服务器,为来自任何Web浏览器的文档请求进行服务。 客户端可以位于使用标准HTTP协议的网络的任何地方。在此协议之下,文档的类型与文档本身一起发往客户端。Web Listener支持多种不同的文档类型。客户端解释并且显示相应的文件,或者将文件传给处理该文档类型的特定程序。例如,在客户机上MPEG viewer将接收由新闻广播宕下来的视频片段。 L`u8|-5
X2>Eb\M
Oracle Web Listener可以处理大量的模拟请求,并具有比目前市场上的HTTP服务器 更有效利用系统资源的高级特性。这些特点将在"Oracle Web Listener"中详细论述。 <ASwc|T4+
&;\0sug^
Oracle Web Listener接收到一个来自客户机的请求后,他首先判断它请求的是一个 静态文件还是动态文件。如果请求的是静态文件,Web Listener将文件和相关的类型信息直接发给客户端。如果请求的是动态文件,它由一个由Web Listener启动的程序在“飞行中”("on the fly")创建,且与公共网关接口(CGI)兼容。CGI是一个使HTTP服务器能够运行程序并将程序输出作为一个文件发送给用户。大多数HTTP服务器都支持此接口,Oracle Web Listener 遇到一个数据库存储过程的请求时,使用该接口调用Oracle Web Agent。另外,其他任何可执行的程序均可以通过CGI调用。 gNc`'&n
}eU9', 0fY
1.2 Oracle Web Agent 代理 voEJ7]
Oracle Web Agent是 Oracle Web Listener当接收到一个对数据库存储过程的请求时调用的的一个程序。它处理与Oracle7 Server建立连接的细节。Web代理使用作为Web Agent service的一部分的指定的数据库用户名和口令,来连接到单一的Oracle7 Server。为了连接到不同的服务器,或者同一服务器的不同模式,可以在一个Oracle WebServer上可以配置多个Web Agent 服务。这在准确地控制了Web客户端能够访问的信息的同时,也允许创建从多个不同的数据库汇合数据的应用的极大灵活性。 C/p~_kIR
&_pCT3Hm
1.3 Oracle WebServer 开发者工具箱 o^QM-h-f
Oracle WebServer开发者工具箱是一个帮助用户快速使用Oracle WebServer建立Web应用的一个PL/SQL例程集合和样例应用。样例应用可以作为用户应用的模板。经过简单的修改以包含用户站点的特定的文本和图形,这些样例就可以迅速简单地为特定的站点所客户化。 b+5&7]@p~
zbLW?!Rpl
当Oracle Web Agent登录到Oracle7 Server时,它启动一个已由用户创建的用于生成HTML页面为输出的PL/SQL过程。开发者工具箱中的过程和函数生成实际HTML标记,所以将注意力集中在应用的内容上,而不是HTML的特性上。 L^z6%
L]{+-[^.
有关Oracle WebServer 开发者工具箱的例程的详细内容,请见第四章。 p=(DiI[
"7 O+'1VE
1.4 Oracle7 Server ,Xj=;]0TC
Oracle7 Server是一个高性能,容错的关系型数据库管理系统,专门为联机事务处理和大型数据库应用而设计。Oracle7 Server能可靠地管理在多用户环境下的大量的数据。Oracle7 Server即使在很多用户并发地存取数据时,也能提供高性能。它对于未授权访问也是安全的,并提供失败恢复的有效方案。
IXQ9vj u
商务数据是存储在oracle7数据库中的。它在服务器中被格式化为Web文档,然后传输给Web客户机。所有数据只存储一次,依据Web上的使用需要而定期进行“快照”。 - PP C
d 7?,^m\i0
构成Oracle WebServer的各部分协同工作,使得投递静态和动态信息均为可能。 pSv/;l
.s7r`*d-
Oracle WebServer的组成部分 S[E2u<T[
Oracle WebServer的组成部分如下: bfQ,wAbl
Vd>dUkX'
Oracle Web Listener. Oracle Web监听程序接收使用任何浏览器的用户发出的请求。对于静态(基于文件的)页面请求被监听进程立即处理,其功能即是一个HTTP 服务器。 +L\b(25
yv#Xe1I
Oracle Web Agent. Oracle Web 代理处理来自拥护的对于动态页面的请求。它将连接转向Oracle7 Server, 调用请求的过程,并将结果HTML文件返回浏览器。 uBM)SmZU
Bu( kv
Oracle WebServer Developer''s Toolkit. Oracle WebServer 开发者工具箱是一个帮助用户创建生成动态HTML文件的过程的集合。 WZ*_G&
hHzOs'Ah
Oracle7 Server. Oracle7 Server 为关系型表的数据和所有用于创建HTML页面的程序逻辑提供存储。 #)*E&C2<
peCI:k
他们中的每个部分和操作将在以后的章节中详细描述。 h[ RD &,
. %4Xo
1.1 The Oracle Web Listener监听程序 m6_(Z_Wmq
+?,r Bs
Oracle Web 监听程序是个商业品质级的HTTP服务器,为来自任何Web浏览器的文档请求进行服务。 客户端可以位于使用标准HTTP协议的网络的任何地方。在此协议之下,文档的类型与文档本身一起发往客户端。Web Listener支持多种不同的文档类型。客户端解释并且显示相应的文件,或者将文件传给处理该文档类型的特定程序。例如,在客户机上MPEG viewer将接收由新闻广播宕下来的视频片段。 L`u8|-5
X2>Eb\M
Oracle Web Listener可以处理大量的模拟请求,并具有比目前市场上的HTTP服务器 更有效利用系统资源的高级特性。这些特点将在"Oracle Web Listener"中详细论述。 <ASwc|T4+
&;\0sug^
Oracle Web Listener接收到一个来自客户机的请求后,他首先判断它请求的是一个 静态文件还是动态文件。如果请求的是静态文件,Web Listener将文件和相关的类型信息直接发给客户端。如果请求的是动态文件,它由一个由Web Listener启动的程序在“飞行中”("on the fly")创建,且与公共网关接口(CGI)兼容。CGI是一个使HTTP服务器能够运行程序并将程序输出作为一个文件发送给用户。大多数HTTP服务器都支持此接口,Oracle Web Listener 遇到一个数据库存储过程的请求时,使用该接口调用Oracle Web Agent。另外,其他任何可执行的程序均可以通过CGI调用。 gNc`'&n
}eU9', 0fY
1.2 Oracle Web Agent 代理 voEJ7]
Oracle Web Agent是 Oracle Web Listener当接收到一个对数据库存储过程的请求时调用的的一个程序。它处理与Oracle7 Server建立连接的细节。Web代理使用作为Web Agent service的一部分的指定的数据库用户名和口令,来连接到单一的Oracle7 Server。为了连接到不同的服务器,或者同一服务器的不同模式,可以在一个Oracle WebServer上可以配置多个Web Agent 服务。这在准确地控制了Web客户端能够访问的信息的同时,也允许创建从多个不同的数据库汇合数据的应用的极大灵活性。 C/p~_kIR
&_pCT3Hm
1.3 Oracle WebServer 开发者工具箱 o^QM-h-f
Oracle WebServer开发者工具箱是一个帮助用户快速使用Oracle WebServer建立Web应用的一个PL/SQL例程集合和样例应用。样例应用可以作为用户应用的模板。经过简单的修改以包含用户站点的特定的文本和图形,这些样例就可以迅速简单地为特定的站点所客户化。 b+5&7]@p~
zbLW?!Rpl
当Oracle Web Agent登录到Oracle7 Server时,它启动一个已由用户创建的用于生成HTML页面为输出的PL/SQL过程。开发者工具箱中的过程和函数生成实际HTML标记,所以将注意力集中在应用的内容上,而不是HTML的特性上。 L^z6%
L]{+-[^.
有关Oracle WebServer 开发者工具箱的例程的详细内容,请见第四章。 p=(DiI[
"7 O+'1VE
1.4 Oracle7 Server ,Xj=;]0TC
Oracle7 Server是一个高性能,容错的关系型数据库管理系统,专门为联机事务处理和大型数据库应用而设计。Oracle7 Server能可靠地管理在多用户环境下的大量的数据。Oracle7 Server即使在很多用户并发地存取数据时,也能提供高性能。它对于未授权访问也是安全的,并提供失败恢复的有效方案。
Oracle Web Agent是当Web Listener收到一个动态文档请求时执行的CGI程序。此程序登录进数据库并执行作为URL的一部分而指定的PL/SQL存储过程。 BC5 m
bLhD"tKrU
作为开发Web Agent的PL/SQL工具,WebServer Developer''s Toolkit包括以下包: <rX(RIA
co,SHQz
HTP (超文本过程) 和 HTF (超文本函数) 简化了在用户的PL/SQL代码里 生成HTML标记的工作。 HTP和HTF自动生成由Oracle Web检索的HTML标记。 2ICJcSt{
'~YR e>N&
OWA_UTIL 包含了能使程序员更快速构造HTML输出的实用函数。 wzhD1UUx
fAx63rij7
注意: Web Agent 也包括一些叫OWA的PL/SQL包,它包括一些由Web Agent调用的进行诸如设置CGI环境变量和从PL/SQL表中提取由PL/SQL代码生成的输出等实用功能。一个PL/SQL开发员不能直接调用OWA包,虽然它可以用用户通过URL直接调用。 ]0u"Q(D=
^tc!hhc
Oracle WebServer Developer''s Toolkit的进一步信息见第四章。 Mls/y4$w
$g)}]vg
谁使用Oracle Web Agent #nKm r
Oracle Web Agent 可以被以下人使用: 8=f_3[/.
x-wWVI
想开发与oracle7互操作的Web应用的程序员。Oracle Web Agent允许程序员创建 PL/SQL过程来进行数据库操作并将结果格式化为HTML文档。这些文档被返回Web 客户端。所以,程序员需要了解以下知识: JLw D}4
K/i a~P
用于生成HTML格式文档的超文本函数和超文本过程。 hGR}iz9
PL/SQL过程语言的基础。 #dYW :i
另外,以下知识对于程序员也非常重要: R(* ~E
哪些公共网关接口的变量 对于 PL/SQL应用是有效的,以及如何存取它们。 xVa PTR
Web Agent如何处理参数 (本章介绍) mrGoMS0h
如何使用OWA_UTIL PL/SQL实用包 (, "The WebServer Developer''s Toolkit".中介绍) &4'z18 e
想安装和设置Oracle Web Agent,并用管理员工具维护Web Agent的系统管理员。 3C#Dxd]h&
管理员需要了解以下知识: yXKoG6o
如何创建,修改和删除Web Agent服务。 Nu5|S bn
在哪里安装由Web Agent提供的开发工具PL/SQL包。 (*-Km-1U`
下述信息对管理员也十分有用: 5wCoD]1/^1
Oracle Web Agent如何工作 (本章讲述) ){n}lw7
Web Agent如何处理错误 (本章讲述) _3s7pV
di7l5
3.1 Oracle Web Agent如何工作 1~nBM$xv
Oracle Web Agent使你能用开发工具箱创建PL/SQL存储过程来存取Oracle7的数据,动态生成来自那些数据的HTML文档,并将文档返回给客户端。 \%<6B/ zt
\X3-: 7{
下面描述一下Oracle Web Agent是如何一步一步工作的: %vjU.PQ
\zp v
1. 用户从浏览器提交一个URL。 ~<>U v@x
用户以下列方法之一提交URL: 9f=:#DF
通过从HTML页面上选择一个链接 LE2s8lH-6
在其浏览器的打开URL框中指定一个URL "2"b760<Y
提交HTML表格 MCJU{DC#
D/zBi'B1Qf
此动作触发了一个与URL相关的GET或POST请求方法操作。请求方法使用HTTP协议传给了Web Listener。 uD$
Z9ySiz*",g
2. Web Listener 启动了 Web Agent. (,MtT/H
Web Listener判断此URL是否与Oracle Web Agent有关(通过抽取URL的/owa部分),并调用Web Agent。为与CGI标准兼容,Web Listener使几个环境变量对Web Agent有效. 6%%%we
&XB:#TGl
3. Web Agent连接到Oracle7 Server. $a3!H
为连接到Oracle7 Server,Web Agent要求一些诸如连接到哪个服务器,使用什么用户名和口令等信息。这些信息作为Web Agent的一部分,存储在位于OWS管理目录下的文件owa.cfg 中。Web Agent通过解析环境变量SCRIPT_NAME来决定使用哪个服务,环境变量SCRIPT_NAME是由Web Listener根据CGI 1.1说明书设定的。 qF6ED,ZoK
5/{5)6+@Y
Web Listener从URL中/owa 前面的路径段推出这个环境变量的值。例如,如果/ows-bin/hr/owa是URL的前边部分,那么hr就是要使用的服务。 \t-wc=
yIY`*>7B"
有关如何设置Web Agent service的进一步的内容, 请见本章后面的"Web AgentService"一节. ?xvL-"wIB
5!G*:;:
4. PL/SQL 过程被调用 />kV!&/]
连接到数据库后,Web Agent调用相应的PL/SQL过程,其名字通过解析环境变量PATH_INFO获得。 N DF |:o
}Chu> <'D
如果PL/SQL过程要求参数,这些参数已经由Web Listener通过环境变量QUERY_STRING或标准输入(这依赖于请求方法是"GET"还是"POST")传给了WebAgent。Web Agent将把这些参数传给PL/SQL过程。 Br3,r& /
i/N=;)gG
有关PATH_INFO, SCRIPT_NAME,和QUERY_STRING 以及Oracle Web Agent如何使用他们的内容, 请见本章后面的"Web Agent如何使用CGI环境变量"一节. OLsA:/L
Re `%N/
5. PL/SQL过程执行, 生成 HTML 文档. Y'+T*)fC
在Developer''s Toolkit的帮助下,PL/SQL过程从Oracle7数据库中提取出数据并在PL/SQL表中生成了HTML文档。 YCIK_z
M[R>kiy
有关Developer''s Toolkit的内容请见第四章"Oracle WebServer Developer''s Toolkit." bS\8I0P
^V\u%l>N
6. Web Agent将生成的HTML文档传给Oracle Web Listener. F<GnA~$\
如果PL/SQL过程成功结束,Web Agent将从PL/SQL表里取出生成的HTML文档,并把它发送到标准输出,那里是Web Listener期望CGI应用把他们的输出发送到的地方。 8Q(j.G+D
wo!L)W
如果PL/SQL过程返回错误,Web Agent则把程序定义的出错页面发送到标准输出。 %a>'X7N d
:8!Ds WO
有关如何处理错误的内容请见"Oracle Web Agent Error Handling"一节。 ?g$E@8
aR ~D.P
7. Web Listener把 HTML文档发送回原发出请求的浏览器 bhNI8#pv
Web Listener使用HTTP将HTML文档发还浏览器。浏览器并不知道请求的文档是在飞行中生成的,把它象任何其他HTML一样显示在屏幕上。 }u -{EsZ
):,TM
Web Agent服务 Service Mpq 59zU
因为人们希望单个Web Listener能够访问多个数据库或一个数据库里的多个模式,Oracle Web Agent支持服务的概念。我们用下面的例子描述一下服务的概念: _K+Z+1x
Ir;pO@N
公司A想让他们存储在Oracle7数据库中的数据可以被公众通过Oracle Web Listener访问。然而公司内不同部门对数据库以用户名为分割的不同部分(模式)有访问权限。 ;JCH ujV
&8lC(7t
所以,人力资源部和财务部使用不同的用户名/口令组合来登录数据库。如果他们都想用使用Oracle Web Agent的CGI应用访问他们的数据,Web Agent需要使用正确的用户名/口令来登录数据库。采用这种方案,含有配置信息的owa.cfg文件中包含两个服务,HR 服务和AP服务。每个服务有相关的用户名/口令,ORACLE_HOME参数,和ORACLE_SID参数。当一个来自浏览器的请求到来时,Web Listener从URL中抽取出服务名并读取owa.cfg文件找出将使用的参数。 A\ &XX\K L
,oQ *&Q~o
为连接到Oracle7服务器,Web Agent需要在Web Agent服务中指明以下信息: cn\Z#<3
gk2Xww(~
username 用户名 %K qG
password 口令 -D9.bp)J
ORACLE_HOME k_pkfvEy
ORACLE_SID (仅对本地数据库) 'UUw5ZMy
SQL*Net V2 Service Name or Connect String (仅对远程数据库) <s\q$
Administration Utility允许管理员显示,创建,修改或删除Web Agent服务。用创建 % ku{n'<
Web Agent的表格,你不需要直接修改配置文件owa.cfg。参见 "Creating or Modifying Web Agent Services," 。 i2;P&^\ct
@r(GI=z'
下面是一个owa.cfg文件中Web Agent服务项的例子,每个参数有相应的解释。 =E,/N`9bnQ
"v)z/'F9
Developer''s T# 2?v] D1
4CeUc
( I PP[z{
owa_service = es |LKVb]R,f
( n#WE#-jhH
owa_user = www_es gJ8yVS#aU
) -qPWtN?a
( i:l5=s1
owa_password = tiger (8 GQ\
) <@&B`h
( \zxZkU}
oracle_home = /opt/oracle7 G4`py6=9a@
) jhR D]
( gfgJzuX-W
oracle_sid = esprod >Pt=$89
) 1H||\;:>
( >c^MYQF
owa_err_page = /es_err.html 2pC8MX:
) m8w2zMA
( mygZ%l 58
owa_valid_ports = 8000 8888 Y$A4;J
) LtV <w&zp
( 4KI-.e~o
owa_log_dir = /opt/oracle7/ows/log = 42@4&c
) ZJ{ >1/[s
( 6>H"HWa
owa_nls_lang = AMERICAN_AMERICA.US7ASCII [$.h7~\@]
) 1}j.Sg4>]-
) 61U"owr*
owa_service MnT/2:@!
Web Agent 服务的名字 } >3)1Yb
owa_user 6uD|pwLL
Web Agent连接数据库用的数据库用户名。 vgd62<TF
owa_password hMUw)r8bZ
Web Agent连接数据库用的数据库口令。 (fp/Df>`-
oracle_home n@u'?9t
Oracle7代码树在文件系统中的位置。它应该是Web Agent服务连接到的数据库的ORACLE_HOME,除非Web Agent设置为通过SQL*NET连接到一个远程数据库。这种情况下,指定Web Agent所在的ORACLE_HOME。Web Agent总是安装在ORACLE_HOME目录或其子目录下。 -xTW'QEq<
oracle_sid "yz]&^xc
将连接到的数据库的系统ID名。连接到远程数据库时,不要使用。 +3;=I
>jH[#i9 ^Z
owa_err_page C8imxWDD
Web Agent调用的PL/SQL过程发生错误时,Web Agent返回的HTML文档的路径。这是个实际路径,而非Web Listener配置中的那种虚拟路径。 5\8u I
q>a$1ba#/
owa_valid_ports =}ek[yk>
Web Agent将服务的有效的Web Listener网络端口。 ,,>%-i{D
T~>v;B&.
owa_log_dir *ZB0 Ph4f
Oracle Web Agent写出错文件的目录。出错文件的名字为service_name.err。 _{P4Kosj?
u2BNsZn F<
owa_nls_lang f;_St yW
Web Agent连接的Oracle7数据库的NLS_LANG。若不指定,Web Agent管理程序当服务执行时寻找数据库的NLS_LANG。 "><Fsmd%
cJ|:JCH
5AH$&.'#'
Web Agent如何使用CGI环境变量 ^kue5yg/
Web Agent使用的环境变量见表3-1: =<\$\H C
变量 包含 c x+cky+
REQUEST_METHOD GET 或 POST ]Udmxs,5-
PATH_INFO 将调用的PL/SQL过程的名字。 QUqg?-'v
SCRIPT_NAME 包含登录Oracle7时用的Web Agent和服务 。 <8vSe)
QUERY_STRING PL/SQL过程的参数(仅对GET方法。POST方法的参数通过标准输入传递。) w \dl|]uR
表 3 - 1. Oracle Web Agent使用的CGI 变量 uu#wH bxe
PP_-3}
下面是一个典型的URL如何被与CGI 1.1说明书兼容的Web Listener解析的例子。 \l XQ!$
4:DXwMm9 C
http://www.nhl.com:8080/ows-bin/nhl/owa/hockey.pass?person=Gretzky Y n=1oou
1. 子串 http://www.nhl.com:8080 表明Web浏览器要用HTTP协议连接到www.nhl.com主机的端口8080上。 Dl3\.QX
2. 当运行在www.nhl.com上的Oracle Web Listener接收到请求,子串/ows-bin/nh
bLhD"tKrU
作为开发Web Agent的PL/SQL工具,WebServer Developer''s Toolkit包括以下包: <rX(RIA
co,SHQz
HTP (超文本过程) 和 HTF (超文本函数) 简化了在用户的PL/SQL代码里 生成HTML标记的工作。 HTP和HTF自动生成由Oracle Web检索的HTML标记。 2ICJcSt{
'~YR e>N&
OWA_UTIL 包含了能使程序员更快速构造HTML输出的实用函数。 wzhD1UUx
fAx63rij7
注意: Web Agent 也包括一些叫OWA的PL/SQL包,它包括一些由Web Agent调用的进行诸如设置CGI环境变量和从PL/SQL表中提取由PL/SQL代码生成的输出等实用功能。一个PL/SQL开发员不能直接调用OWA包,虽然它可以用用户通过URL直接调用。 ]0u"Q(D=
^tc!hhc
Oracle WebServer Developer''s Toolkit的进一步信息见第四章。 Mls/y4$w
$g)}]vg
谁使用Oracle Web Agent #nKm r
Oracle Web Agent 可以被以下人使用: 8=f_3[/.
x-wWVI
想开发与oracle7互操作的Web应用的程序员。Oracle Web Agent允许程序员创建 PL/SQL过程来进行数据库操作并将结果格式化为HTML文档。这些文档被返回Web 客户端。所以,程序员需要了解以下知识: JLw D}4
K/i a~P
用于生成HTML格式文档的超文本函数和超文本过程。 hGR}iz9
PL/SQL过程语言的基础。 #dYW :i
另外,以下知识对于程序员也非常重要: R(* ~E
哪些公共网关接口的变量 对于 PL/SQL应用是有效的,以及如何存取它们。 xVa PTR
Web Agent如何处理参数 (本章介绍) mrGoMS0h
如何使用OWA_UTIL PL/SQL实用包 (, "The WebServer Developer''s Toolkit".中介绍) &4'z18 e
想安装和设置Oracle Web Agent,并用管理员工具维护Web Agent的系统管理员。 3C#Dxd]h&
管理员需要了解以下知识: yXKoG6o
如何创建,修改和删除Web Agent服务。 Nu5|S bn
在哪里安装由Web Agent提供的开发工具PL/SQL包。 (*-Km-1U`
下述信息对管理员也十分有用: 5wCoD]1/^1
Oracle Web Agent如何工作 (本章讲述) ){n}lw7
Web Agent如何处理错误 (本章讲述) _3s7pV
di7l5
3.1 Oracle Web Agent如何工作 1~nBM$xv
Oracle Web Agent使你能用开发工具箱创建PL/SQL存储过程来存取Oracle7的数据,动态生成来自那些数据的HTML文档,并将文档返回给客户端。 \%<6B/ zt
\X3-: 7{
下面描述一下Oracle Web Agent是如何一步一步工作的: %vjU.PQ
\zp v
1. 用户从浏览器提交一个URL。 ~<>U v@x
用户以下列方法之一提交URL: 9f=:#DF
通过从HTML页面上选择一个链接 LE2s8lH-6
在其浏览器的打开URL框中指定一个URL "2"b760<Y
提交HTML表格 MCJU{DC#
D/zBi'B1Qf
此动作触发了一个与URL相关的GET或POST请求方法操作。请求方法使用HTTP协议传给了Web Listener。 uD$
Z9ySiz*",g
2. Web Listener 启动了 Web Agent. (,MtT/H
Web Listener判断此URL是否与Oracle Web Agent有关(通过抽取URL的/owa部分),并调用Web Agent。为与CGI标准兼容,Web Listener使几个环境变量对Web Agent有效. 6%%%we
&XB:#TGl
3. Web Agent连接到Oracle7 Server. $a3!H
为连接到Oracle7 Server,Web Agent要求一些诸如连接到哪个服务器,使用什么用户名和口令等信息。这些信息作为Web Agent的一部分,存储在位于OWS管理目录下的文件owa.cfg 中。Web Agent通过解析环境变量SCRIPT_NAME来决定使用哪个服务,环境变量SCRIPT_NAME是由Web Listener根据CGI 1.1说明书设定的。 qF6ED,ZoK
5/{5)6+@Y
Web Listener从URL中/owa 前面的路径段推出这个环境变量的值。例如,如果/ows-bin/hr/owa是URL的前边部分,那么hr就是要使用的服务。 \t-wc=
yIY`*>7B"
有关如何设置Web Agent service的进一步的内容, 请见本章后面的"Web AgentService"一节. ?xvL-"wIB
5!G*:;:
4. PL/SQL 过程被调用 />kV!&/]
连接到数据库后,Web Agent调用相应的PL/SQL过程,其名字通过解析环境变量PATH_INFO获得。 N DF |:o
}Chu> <'D
如果PL/SQL过程要求参数,这些参数已经由Web Listener通过环境变量QUERY_STRING或标准输入(这依赖于请求方法是"GET"还是"POST")传给了WebAgent。Web Agent将把这些参数传给PL/SQL过程。 Br3,r& /
i/N=;)gG
有关PATH_INFO, SCRIPT_NAME,和QUERY_STRING 以及Oracle Web Agent如何使用他们的内容, 请见本章后面的"Web Agent如何使用CGI环境变量"一节. OLsA:/L
Re `%N/
5. PL/SQL过程执行, 生成 HTML 文档. Y'+T*)fC
在Developer''s Toolkit的帮助下,PL/SQL过程从Oracle7数据库中提取出数据并在PL/SQL表中生成了HTML文档。 YCIK_z
M[R>kiy
有关Developer''s Toolkit的内容请见第四章"Oracle WebServer Developer''s Toolkit." bS\8I0P
^V\u%l>N
6. Web Agent将生成的HTML文档传给Oracle Web Listener. F<GnA~$\
如果PL/SQL过程成功结束,Web Agent将从PL/SQL表里取出生成的HTML文档,并把它发送到标准输出,那里是Web Listener期望CGI应用把他们的输出发送到的地方。 8Q(j.G+D
wo!L)W
如果PL/SQL过程返回错误,Web Agent则把程序定义的出错页面发送到标准输出。 %a>'X7N d
:8!Ds WO
有关如何处理错误的内容请见"Oracle Web Agent Error Handling"一节。 ?g$E@8
aR ~D.P
7. Web Listener把 HTML文档发送回原发出请求的浏览器 bhNI8#pv
Web Listener使用HTTP将HTML文档发还浏览器。浏览器并不知道请求的文档是在飞行中生成的,把它象任何其他HTML一样显示在屏幕上。 }u -{EsZ
):,TM
Web Agent服务 Service Mpq 59zU
因为人们希望单个Web Listener能够访问多个数据库或一个数据库里的多个模式,Oracle Web Agent支持服务的概念。我们用下面的例子描述一下服务的概念: _K+Z+1x
Ir;pO@N
公司A想让他们存储在Oracle7数据库中的数据可以被公众通过Oracle Web Listener访问。然而公司内不同部门对数据库以用户名为分割的不同部分(模式)有访问权限。 ;JCH ujV
&8lC(7t
所以,人力资源部和财务部使用不同的用户名/口令组合来登录数据库。如果他们都想用使用Oracle Web Agent的CGI应用访问他们的数据,Web Agent需要使用正确的用户名/口令来登录数据库。采用这种方案,含有配置信息的owa.cfg文件中包含两个服务,HR 服务和AP服务。每个服务有相关的用户名/口令,ORACLE_HOME参数,和ORACLE_SID参数。当一个来自浏览器的请求到来时,Web Listener从URL中抽取出服务名并读取owa.cfg文件找出将使用的参数。 A\ &XX\K L
,oQ *&Q~o
为连接到Oracle7服务器,Web Agent需要在Web Agent服务中指明以下信息: cn\Z#<3
gk2Xww(~
username 用户名 %K qG
password 口令 -D9.bp)J
ORACLE_HOME k_pkfvEy
ORACLE_SID (仅对本地数据库) 'UUw5ZMy
SQL*Net V2 Service Name or Connect String (仅对远程数据库) <s\q$
Administration Utility允许管理员显示,创建,修改或删除Web Agent服务。用创建 % ku{n'<
Web Agent的表格,你不需要直接修改配置文件owa.cfg。参见 "Creating or Modifying Web Agent Services," 。 i2;P&^\ct
@r(GI=z'
下面是一个owa.cfg文件中Web Agent服务项的例子,每个参数有相应的解释。 =E,/N`9bnQ
"v)z/'F9
Developer''s T# 2?v] D1
4CeUc
( I PP[z{
owa_service = es |LKVb]R,f
( n#WE#-jhH
owa_user = www_es gJ8yVS#aU
) -qPWtN?a
( i:l5=s1
owa_password = tiger (8 GQ\
) <@&B`h
( \zxZkU}
oracle_home = /opt/oracle7 G4`py6=9a@
) jhR D]
( gfgJzuX-W
oracle_sid = esprod >Pt=$89
) 1H||\;:>
( >c^MYQF
owa_err_page = /es_err.html 2pC8MX:
) m8w2zMA
( mygZ%l 58
owa_valid_ports = 8000 8888 Y$A4;J
) LtV <w&zp
( 4KI-.e~o
owa_log_dir = /opt/oracle7/ows/log = 42@4&c
) ZJ{ >1/[s
( 6>H"HWa
owa_nls_lang = AMERICAN_AMERICA.US7ASCII [$.h7~\@]
) 1}j.Sg4>]-
) 61U"owr*
owa_service MnT/2:@!
Web Agent 服务的名字 } >3)1Yb
owa_user 6uD|pwLL
Web Agent连接数据库用的数据库用户名。 vgd62<TF
owa_password hMUw)r8bZ
Web Agent连接数据库用的数据库口令。 (fp/Df>`-
oracle_home n@u'?9t
Oracle7代码树在文件系统中的位置。它应该是Web Agent服务连接到的数据库的ORACLE_HOME,除非Web Agent设置为通过SQL*NET连接到一个远程数据库。这种情况下,指定Web Agent所在的ORACLE_HOME。Web Agent总是安装在ORACLE_HOME目录或其子目录下。 -xTW'QEq<
oracle_sid "yz]&^xc
将连接到的数据库的系统ID名。连接到远程数据库时,不要使用。 +3;=I
>jH[#i9 ^Z
owa_err_page C8imxWDD
Web Agent调用的PL/SQL过程发生错误时,Web Agent返回的HTML文档的路径。这是个实际路径,而非Web Listener配置中的那种虚拟路径。 5\8u I
q>a$1ba#/
owa_valid_ports =}ek[yk>
Web Agent将服务的有效的Web Listener网络端口。 ,,>%-i{D
T~>v;B&.
owa_log_dir *ZB0 Ph4f
Oracle Web Agent写出错文件的目录。出错文件的名字为service_name.err。 _{P4Kosj?
u2BNsZn F<
owa_nls_lang f;_St yW
Web Agent连接的Oracle7数据库的NLS_LANG。若不指定,Web Agent管理程序当服务执行时寻找数据库的NLS_LANG。 "><Fsmd%
cJ|:JCH
5AH$&.'#'
Web Agent如何使用CGI环境变量 ^kue5yg/
Web Agent使用的环境变量见表3-1: =<\$\H C
变量 包含 c x+cky+
REQUEST_METHOD GET 或 POST ]Udmxs,5-
PATH_INFO 将调用的PL/SQL过程的名字。 QUqg?-'v
SCRIPT_NAME 包含登录Oracle7时用的Web Agent和服务 。 <8vSe)
QUERY_STRING PL/SQL过程的参数(仅对GET方法。POST方法的参数通过标准输入传递。) w \dl|]uR
表 3 - 1. Oracle Web Agent使用的CGI 变量 uu#wH bxe
PP_-3}
下面是一个典型的URL如何被与CGI 1.1说明书兼容的Web Listener解析的例子。 \l XQ!$
4:DXwMm9 C
http://www.nhl.com:8080/ows-bin/nhl/owa/hockey.pass?person=Gretzky Y n=1oou
1. 子串 http://www.nhl.com:8080 表明Web浏览器要用HTTP协议连接到www.nhl.com主机的端口8080上。 Dl3\.QX
2. 当运行在www.nhl.com上的Oracle Web Listener接收到请求,子串/ows-bin/nh
本章描述组成Oracle WebServer工具箱的 超文本过程,超文本函数和实用程序。 |99cy?6<R
M(u@b{d
Oracle Web Agent的主要目标之一就是PL/SQL程序员熟悉World Wide Web技术。 aO.6qKBs
}Te-> !<M
从这一点,Oracle WebServer包括了由几个PL/SQL组成的开发包以以最小化程序员对HTML语法的要求。虽然程序员仍然要求有HTML的工作知识,但使用工具包,他们不需要在PL/SQL过程中写HTML标记实际语法的的硬编码。例如,程序员要求实现一个必要的锚,但他不需要知道生成一个锚的字符的实际序列。 wg^ 2&!#
{ Un <n
Oracle WebServer开发包包括下列PL/SQL包: PA"tMqz
6+[!Wo[L
超文本过程 (HTP) sb)PS ;C
一个超文本过程 在HTML文档中生成包含与其名字相对应的HTML标记的一行。例如,htp.anchor过程生成一个锚标记。HTP包是三者之中最常用的包。 超文本函数 (HTF) ,1)@i`]8
G)9uEV
一个超文本函数返回与其名字相应的HTML标记。然而, 因为HTML标记不能通过Web Agent,所以不能直接调用HTF函数本身。HTF函数的输出必须通过htp.print,才能真正成为HTML文档的一部分。所以,下面一行: ")L lY
htp.print(htf.italic(''Title'')); CTO[ VO$
功能上等价于 : npMK).a
htp.italic(''Title''); p9zkoC4
每个超文本函数(HTF)有一个相对应的超文本过程(HTP)。所以HTF函数通常仅用于编程时需要嵌套调用的情况,例如: &$ BEa_dfj
htp.header(1,htf.italic(''Title'')); +( 2|D
此例中,''htf.italic''将生成如下字符串: $:"&wAEE
Title KaE6 %
该字符串传给过程''htp.header''后,在格式化的HTML文档中将出现如下行: U3aW'FuL$
l$^sYd6
Title /`Ckn\[
_s "en4X
OWA Utilities (OWA_UTIL) OWA实用程序一个有用的实用过程和函数的集合。他们的目的包括从在HTML页上打印一个符号标记到简便地把Oracle表格式化为HTML格式。 },/<]bF]y
(:^i48gT
OWA OFTVKwCT
一个仅供Oracle Web Agent自己调用的过程集合。此包中的任何子程序都不能在用户开发的PL/SQL中直接调用。 OS"xR ly
hhgF H
4.1 安装Oracle WebServer开发者工具箱 "y,?r`I}Da
bdB+PNmn(
开发者工具箱的安装,使用OWA服务管理表格。在服务建立和修改页面上均有是否安装开发者工具箱的检查框选择。选择它并提交表格将做如下事情: #vwG;!i
\DlH w
将CONNECT和RESOURCE角色授权给OWA数据库用户。 zm N35q
__ e'_g
执行SQL脚本OWAINS.SQL,该文件可以在OWS管理目录下找到。若手动运行,应使用 SQL*DBA或Server Manager。若想在SQL*Plus里运行,看脚本头去找步骤。 ,A[ :pF
2o0RF=-m
脚本 OWAINS.SQL 将安装开发者工具箱的所有包。 fW2Q2>c
ehL -z/q|
优化多服务的安装 >XV *{)
如果你的站点有多个Web Agent服务, 你可以按照下列步骤来最小化存储空间的占用量并增强PL/SQL的性能: >@EG` 4=
,jopbVm
1.在一个数据库用户的模式下安装开发者工具箱,这个用户就是工具箱的拥有者。 X*cCLb
dc/w8aQB
2.从其他Web Agent服务的OWA数据库用户的模式下删除工具箱的PL/SQL包,如果 ' [W#
你已经安装了这些包的话。 *[l ? j
connect / )'`[]K\`
drop package HTF; A b)d]
drop package HTP; g#m;_q:
drop package OWA_UTIL; 9N)E:R#g
drop package OWA; DIe #L2y!*
3. 向其他Web Agent服务的OWA数据库用户授与在这些PL/SQL包上的EXECUTE权限。 P f8^n*S7
connect / (qK!%9F
grant execute on HTF to ; J+rt1
grant execute on HTP to ; >i'Izyr
grant execute on OWA_UTIL to ; [Z U)X 63
grant execute on OWA to ; (,H#+X3Lm
4. 在所有的OWA数据库用户中建立工具箱PL/SQL包的同义词。 u UodnM
connect / q'VDO04
create synonym HTF for .HTF; Pg2W[}X
create synonym HTP for .HTP; .w#V1zLU
create synonym OWA_UTIL for .OWA_UTIL; d1}taQ
create synonym OWA for .OWA; <DtS
Security Note 安全要点 vZo'SL]s9
PL/SQL 过程以PL/SQL代码的创建者的权限运行。对于Developer''s Toolkit, 这只关系到owa_util包. 两个子程序, showsource和tableprint,存取用户的数据。此包上的执行权限只能授给允许访问owa_util拥有者的表,视图和PL/SQL存储代码的拥护。 fN[pP(
{C4*?
如果你的安装要考虑安全问题,为每个OWA数据库用户安装独立的owa_util包。 @{Gggl=
mSWp73U=;5
作此事的脚本如下: ^-H F5p-
[umQCc,Fp
PUBUTIL.SQL DO6*9\
PRIVUTIL.SQL bx{(_gcqjo
它们都在OWS管理目录下,应按所列的顺序执行。 <]0=(E~
List Tags 列表标记 R cyI#y /
List tags allow you to display information in any of the following ways: } h*K:xF]
Y$C`m
ordered: these lists have numbered items 'dQFSCh|'
unordered: these lists have bullets to mark each item !'m9l=
definition: these lists alternate a term with its definition r!Cqmb>oU
Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). ]p ?Ibw1
-OjW I/{
htp.listHeader G+>Z#mZ8%q
语法 htp.listHeader (ctext, cattributes); hZ%;wkD
作用 Prints an HTML tag at the beginning of the list E\WqIT.xo:
参数 ctext in varchar2 S%Jz>U3->
cattributes in varchar2 DEFAULT NULL {i$P+td
Generates ctext X3mjF{,}R%
Y _(1c
htp.listItem .BF)]5dI
语法 htp.listItem (ctext, cclear, cdingbat, csrc, cattributes); eGU@2_(rE
作用 Prints an HTML tag that formats a listed item. #(]~8.M
参数 ctext in varchar2 DEFAULT NULL 4o[]h"
cclear in varchar2 DEFAULT NULL H&]f4C6p]
cdingbat in varchar2 DEFAULT NULL Zx{(Tj._
csrc in varchar2 DEFAULT NULL 0OR] h3!;w
cattributes in varchar2 DEFAULT NULL ?iOe,erC
Generates |ui+4mg|
ctext =\b1JVy
IBwFrtNS
htp.ulistOpen /o(v#@GMV
语法 htp.ulistOpen (cclear, cwrap, cdingbat, csrc, cattributes); =4hiQpvTV
作用 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. 3oe@x-l
参数 cclear in varchar2 DEFAULT NULL t6=x6s
cwrap in varchar2 DEFAULT NULL RsAch<
cdingbat in varchar2 DEFAULT NULL pS|V,,/=
csrc in varchar2 DEFAULT NULL ($#U9 (
cattributes in varchar2 DEFAULT NULL O6/LMx ku
Generates 8:ncSa
] H~ni G\
@?u: ;P+1
htp.ulistClose pL1!||]{K
语法 htp.ulistClose; JP=4I9._h
作用 Prints an HTML tag that ends the unordered list. # M 6 rM^s
参数 none B@I5#" x
Generates TO bM.;NW
n&,mxNRKm
`w0LK[ce0
htp.olistOpen a_+%U$
语法 htp.olistOpen (cclear, cwrap, cattributes); w|"6
作用 Prints an HTML tag that is used to open an ordered list that presents listed items marked off with numbers. u~^F O
参数 cclear in varchar2 DEFAULT NULL P9{5Y-
cwrap in varchar2 DEFAULT NULL pN/:5N(/r
cattributes in varchar2 DEFAULT NULL O>C7q]|
Generates ,gh*m{1 0
-1+;8dr&
Dg;s,;8H
htp.olistClose 4FsCa
语法 htp.olistClose; C 6'` y
作用 Prints an HTML tag that ends an ordered list. k(0=NqE
参数 none Rr!*BS%
Generates vV3u8 QA
D}M ttr!
;*RK/eo
htp.dlistOpen 7CX4diJ
语法 htp.dlistOpen (cclear, cattributes); M{ ?[5]
作用 Prints an HTML tag that starts a definition list $:#F 4\5
参数 cclear in varchar2 DEFAULT NULL ;<G_6Cq.
cattributes in varchar2 DEFAULT NULL @j=>D=Wfd
Generates }yTW FA
>[<;7k?>
JtoRwdc
htp.dlistClose NGcD&AB-
语法 htp.dlistClose 2:Or7 &&4
作用 Prints an HTML tag that Ends a definition list `"!EU|E)(
参数 none $}Vs%+]y
Generates 3(z2QcCS&
iHg;kMR
iTaF8*-fq
htp.dlistDef S29D_jNU
语法 htp.dlistDef (ctext, cclear, cattributes); CdDac0x
作用 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. 55(@/6*
参数 ctext in varchar2 DEFAULT NULL h6 N'@}g
clear in varchar2 DEFAULT NULL $! cN\ys
cattributes in varchar2 DEFAULT NULL IN%HE'
Generates +U U<Enh(^
ctext Cb#3=R>^~
'OM;v
htp.dlistTerm *S#Vq-
语法 htp.dlistTerm (ctext, cclear, cattributes); a5>%D/<Ud,
作用 Prints an HTML tag used to insert the definition term inside the definition list. This tag must immediately follow the htp.dlistDef. ~dkg/r~'p_
参数 ctext in varchar2 DEFAULT NULL #pYt<CW
cclear in varchar2 DEFAULT NULL Fw@-:Kp@|
cattributes in varchar2 DEFAULT NULL ir g*n8{%
Generates [fQ=-Y5l3C
ctext , UqDK
7() Mu
htp.menulistOpen YMa!}9<)
语法 htp.menulistOpen; b%K>:
作用 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. %w(PwRD
参数 none l` WjC.2q
Generates gDW !\5(
+{- >jf
_K]u wR
htp.menulistClose J5nmX,`
语法 htp.menulistClose; A19I3 =
作用 Prints an HTML tag that ends a menu list. o\f/] hD
Paramenters none :7!5EH
Generates O;U#4"gjf
dw>%+
~"vbtuO}}
htp.dirlistOpen Dl1JBr
语法 htp
M(u@b{d
Oracle Web Agent的主要目标之一就是PL/SQL程序员熟悉World Wide Web技术。 aO.6qKBs
}Te-> !<M
从这一点,Oracle WebServer包括了由几个PL/SQL组成的开发包以以最小化程序员对HTML语法的要求。虽然程序员仍然要求有HTML的工作知识,但使用工具包,他们不需要在PL/SQL过程中写HTML标记实际语法的的硬编码。例如,程序员要求实现一个必要的锚,但他不需要知道生成一个锚的字符的实际序列。 wg^ 2&!#
{ Un <n
Oracle WebServer开发包包括下列PL/SQL包: PA"tMqz
6+[!Wo[L
超文本过程 (HTP) sb)PS ;C
一个超文本过程 在HTML文档中生成包含与其名字相对应的HTML标记的一行。例如,htp.anchor过程生成一个锚标记。HTP包是三者之中最常用的包。 超文本函数 (HTF) ,1)@i`]8
G)9uEV
一个超文本函数返回与其名字相应的HTML标记。然而, 因为HTML标记不能通过Web Agent,所以不能直接调用HTF函数本身。HTF函数的输出必须通过htp.print,才能真正成为HTML文档的一部分。所以,下面一行: ")L lY
htp.print(htf.italic(''Title'')); CTO[ VO$
功能上等价于 : npMK).a
htp.italic(''Title''); p9zkoC4
每个超文本函数(HTF)有一个相对应的超文本过程(HTP)。所以HTF函数通常仅用于编程时需要嵌套调用的情况,例如: &$ BEa_dfj
htp.header(1,htf.italic(''Title'')); +( 2|D
此例中,''htf.italic''将生成如下字符串: $:"&wAEE
Title KaE6 %
该字符串传给过程''htp.header''后,在格式化的HTML文档中将出现如下行: U3aW'FuL$
l$^sYd6
Title /`Ckn\[
_s "en4X
OWA Utilities (OWA_UTIL) OWA实用程序一个有用的实用过程和函数的集合。他们的目的包括从在HTML页上打印一个符号标记到简便地把Oracle表格式化为HTML格式。 },/<]bF]y
(:^i48gT
OWA OFTVKwCT
一个仅供Oracle Web Agent自己调用的过程集合。此包中的任何子程序都不能在用户开发的PL/SQL中直接调用。 OS"xR ly
hhgF H
4.1 安装Oracle WebServer开发者工具箱 "y,?r`I}Da
bdB+PNmn(
开发者工具箱的安装,使用OWA服务管理表格。在服务建立和修改页面上均有是否安装开发者工具箱的检查框选择。选择它并提交表格将做如下事情: #vwG;!i
\DlH w
将CONNECT和RESOURCE角色授权给OWA数据库用户。 zm N35q
__ e'_g
执行SQL脚本OWAINS.SQL,该文件可以在OWS管理目录下找到。若手动运行,应使用 SQL*DBA或Server Manager。若想在SQL*Plus里运行,看脚本头去找步骤。 ,A[ :pF
2o0RF=-m
脚本 OWAINS.SQL 将安装开发者工具箱的所有包。 fW2Q2>c
ehL -z/q|
优化多服务的安装 >XV *{)
如果你的站点有多个Web Agent服务, 你可以按照下列步骤来最小化存储空间的占用量并增强PL/SQL的性能: >@EG` 4=
,jopbVm
1.在一个数据库用户的模式下安装开发者工具箱,这个用户就是工具箱的拥有者。 X*cCLb
dc/w8aQB
2.从其他Web Agent服务的OWA数据库用户的模式下删除工具箱的PL/SQL包,如果 ' [W#
你已经安装了这些包的话。 *[l ? j
connect / )'`[]K\`
drop package HTF; A b)d]
drop package HTP; g#m;_q:
drop package OWA_UTIL; 9N)E:R#g
drop package OWA; DIe #L2y!*
3. 向其他Web Agent服务的OWA数据库用户授与在这些PL/SQL包上的EXECUTE权限。 P f8^n*S7
connect / (qK!%9F
grant execute on HTF to ; J+rt1
grant execute on HTP to ; >i'Izyr
grant execute on OWA_UTIL to ; [Z U)X 63
grant execute on OWA to ; (,H#+X3Lm
4. 在所有的OWA数据库用户中建立工具箱PL/SQL包的同义词。 u UodnM
connect / q'VDO04
create synonym HTF for .HTF; Pg2W[}X
create synonym HTP for .HTP; .w#V1zLU
create synonym OWA_UTIL for .OWA_UTIL; d1}taQ
create synonym OWA for .OWA; <DtS
Security Note 安全要点 vZo'SL]s9
PL/SQL 过程以PL/SQL代码的创建者的权限运行。对于Developer''s Toolkit, 这只关系到owa_util包. 两个子程序, showsource和tableprint,存取用户的数据。此包上的执行权限只能授给允许访问owa_util拥有者的表,视图和PL/SQL存储代码的拥护。 fN[pP(
{C4*?
如果你的安装要考虑安全问题,为每个OWA数据库用户安装独立的owa_util包。 @{Gggl=
mSWp73U=;5
作此事的脚本如下: ^-H F5p-
[umQCc,Fp
PUBUTIL.SQL DO6*9\
PRIVUTIL.SQL bx{(_gcqjo
它们都在OWS管理目录下,应按所列的顺序执行。 <]0=(E~
List Tags 列表标记 R cyI#y /
List tags allow you to display information in any of the following ways: } h*K:xF]
Y$C`m
ordered: these lists have numbered items 'dQFSCh|'
unordered: these lists have bullets to mark each item !'m9l=
definition: these lists alternate a term with its definition r!Cqmb>oU
Note: All the hypertext procedures (HTP) shown in this section are also available as hypertext functions (HTF). ]p ?Ibw1
-OjW I/{
htp.listHeader G+>Z#mZ8%q
语法 htp.listHeader (ctext, cattributes); hZ%;wkD
作用 Prints an HTML tag at the beginning of the list E\WqIT.xo:
参数 ctext in varchar2 S%Jz>U3->
cattributes in varchar2 DEFAULT NULL {i$P+td
Generates ctext X3mjF{,}R%
Y _(1c
htp.listItem .BF)]5dI
语法 htp.listItem (ctext, cclear, cdingbat, csrc, cattributes); eGU@2_(rE
作用 Prints an HTML tag that formats a listed item. #(]~8.M
参数 ctext in varchar2 DEFAULT NULL 4o[]h"
cclear in varchar2 DEFAULT NULL H&]f4C6p]
cdingbat in varchar2 DEFAULT NULL Zx{(Tj._
csrc in varchar2 DEFAULT NULL 0OR] h3!;w
cattributes in varchar2 DEFAULT NULL ?iOe,erC
Generates |ui+4mg|
ctext =\b1JVy
IBwFrtNS
htp.ulistOpen /o(v#@GMV
语法 htp.ulistOpen (cclear, cwrap, cdingbat, csrc, cattributes); =4hiQpvTV
作用 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. 3oe@x-l
参数 cclear in varchar2 DEFAULT NULL t6=x6s
cwrap in varchar2 DEFAULT NULL RsAch<
cdingbat in varchar2 DEFAULT NULL pS|V,,/=
csrc in varchar2 DEFAULT NULL ($#U9 (
cattributes in varchar2 DEFAULT NULL O6/LMx ku
Generates 8:ncSa
] H~ni G\
@?u: ;P+1
htp.ulistClose pL1!||]{K
语法 htp.ulistClose; JP=4I9._h
作用 Prints an HTML tag that ends the unordered list. # M 6 rM^s
参数 none B@I5#" x
Generates TO bM.;NW
n&,mxNRKm
`w0LK[ce0
htp.olistOpen a_+%U$
语法 htp.olistOpen (cclear, cwrap, cattributes); w|"6
作用 Prints an HTML tag that is used to open an ordered list that presents listed items marked off with numbers. u~^F O
参数 cclear in varchar2 DEFAULT NULL P9{5Y-
cwrap in varchar2 DEFAULT NULL pN/:5N(/r
cattributes in varchar2 DEFAULT NULL O>C7q]|
Generates ,gh*m{1 0
-1+;8dr&
Dg;s,;8H
htp.olistClose 4FsCa
语法 htp.olistClose; C 6'` y
作用 Prints an HTML tag that ends an ordered list. k(0=NqE
参数 none Rr!*BS%
Generates vV3u8 QA
D}M ttr!
;*RK/eo
htp.dlistOpen 7CX4diJ
语法 htp.dlistOpen (cclear, cattributes); M{ ?[5]
作用 Prints an HTML tag that starts a definition list $:#F 4\5
参数 cclear in varchar2 DEFAULT NULL ;<G_6Cq.
cattributes in varchar2 DEFAULT NULL @j=>D=Wfd
Generates }yTW FA
>[<;7k?>
JtoRwdc
htp.dlistClose NGcD&AB-
语法 htp.dlistClose 2:Or7 &&4
作用 Prints an HTML tag that Ends a definition list `"!EU|E)(
参数 none $}Vs%+]y
Generates 3(z2QcCS&
iHg;kMR
iTaF8*-fq
htp.dlistDef S29D_jNU
语法 htp.dlistDef (ctext, cclear, cattributes); CdDac0x
作用 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. 55(@/6*
参数 ctext in varchar2 DEFAULT NULL h6 N'@}g
clear in varchar2 DEFAULT NULL $! cN\ys
cattributes in varchar2 DEFAULT NULL IN%HE'
Generates +U U<Enh(^
ctext Cb#3=R>^~
'OM;v
htp.dlistTerm *S#Vq-
语法 htp.dlistTerm (ctext, cclear, cattributes); a5>%D/<Ud,
作用 Prints an HTML tag used to insert the definition term inside the definition list. This tag must immediately follow the htp.dlistDef. ~dkg/r~'p_
参数 ctext in varchar2 DEFAULT NULL #pYt<CW
cclear in varchar2 DEFAULT NULL Fw@-:Kp@|
cattributes in varchar2 DEFAULT NULL ir g*n8{%
Generates [fQ=-Y5l3C
ctext , UqDK
7() Mu
htp.menulistOpen YMa!}9<)
语法 htp.menulistOpen; b%K>:
作用 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. %w(PwRD
参数 none l` WjC.2q
Generates gDW !\5(
+{- >jf
_K]u wR
htp.menulistClose J5nmX,`
语法 htp.menulistClose; A19I3 =
作用 Prints an HTML tag that ends a menu list. o\f/] hD
Paramenters none :7!5EH
Generates O;U#4"gjf
dw>%+
~"vbtuO}}
htp.dirlistOpen Dl1JBr
语法 htp
闽公网安备 35060202000074号