|
|
Sun Java System Application Server 7 Web应用开发者指南 使用服务器解析的HTML HTML文件可以包含在服务器端执行的标记。除了支持这些标准的服务器端标记外,Sun Java System Application Server7还允许嵌入servlet,定义自己的服务器端标记。 可以生成子定义服务器解析的HTML标记。关于这方面的更多信息参见Sun Java System Application ServerNSAPI开发者指南。 关于安全性,服务器解析的HTML标记依赖于服务器的安全配置。更多信息请参考"SHTML和CGI的安全性"以及Sun Java System Application Server管理员安全指南。 该组件有如下一些部分: 在Sun Java System Application Server中,服务器解析的HTML不能与J2EE web应用交互。具体来说:
要启动服务器端HTML,必须: 1. 在管理接口的服务器实例中打开HTTP服务器组件。 2. 访问虚拟服务器页面。 3. 点击要启动服务器端HTML的虚拟服务器的名字。 4. 点击HTTP/HTML标签。 5. 点击解析HTML选项。 6. 为将解析HTML的服务器选择资源。 选择虚拟服务器或在虚拟服务器上指定路径。 如果选择了某个目录,只有当服务器接受到对该目录或该目录中任意文件的URL时才解析HTML。 7. 选择是否激活服务器解析HTML。 可以激活HTML文件但不激活exec标记,或者激活HTML文件同时激活exec标记,这时允许HTML文件来执行服务器端的其它程序。 8. 选择解析哪些文件。 可以选择是否只解析扩展名为.shtml的文件,还是所有的HTML文件,选择所有HTML文件将降低性能。如果使用UNIX,可以选择解析具有执行权限的UNXI文件,尽管这可能不可靠。 9. 点击OK按钮。 10. 访问服务器实例页面,选择应用变化的按钮。 一旦激活了解析功能,需要确定一下下面的命令是否增加进了init.conf文件(本地线程是关闭的):
注意,必须将Sun Java System Application Server7中的NativeThread设置成“no”。另外,这些功能现在源于Shtml.dll(或在Unix中源于libShtml.so),在windows中它位于install_dir/bin(在UNIX中位于install_dir/lib)。 另外,确信下面的命令加入到了obj.conf文件中: <Object
name="default"> 这部分描述了在HTML文件中用于包含服务器解析的标记的HTML命令。这些命令是嵌入到HTML文件中的,由obj.conf文件的parse-html函数处理。 服务器根据命令以及它的属性来用数据替换每条命令。命令的格式如下: <!--#command attribute1 attribute2 <Body>... --> 属性的格式为一对名称-值,例如: name="value" 命令和属性名应该小写。 命令是隐藏在HTML注释中的,因此如果不能被服务器解析就会被忽略。标准的服务器端命令有: 配置命令为其它命令初始化格式。
例如: <!--#config timefmt="%r %a %b %e, %Y" sizefmt="abbrev"--> 它将日期格式像08:23:15 AM Wed Apr 15, 1996值这样设置,文件大小格式设置成文件所使用字符的KB或MB的数值。 include命令将文件插入到已解析的文件中。可以通过包含另一个已解析的文件,而该文件又包含其它文件,等等来形成嵌套文件。如果服务器为其所在的目录使用了访问控制,客户请求的已解析的文档必须同时获得使用包含的文件的权利。 在Sun Java System Application Server7中,可以使用带有virtual属性的include命令来包含一个CGI程序文件。同时必须使用exec命令来执行CGI程序。 · 属性 virtual是文件在服务器上的URL。 · 属性file是从当前目录开始的相对路径名。不能包含像../这样的元素,也不能是一个绝对路径。 例如: <!--#include file="bottle.gif"--> echo命令插入一个环境变量的值。属性var指定要插入的环境变量。如果没有发现该变量,将插入“(none)”。关于环境变量列表请参见"服务器端HTML命令中的环境变量"部分。 例如: <!--#echo var="DATE_GMT"--> fsize命令发送文件的大小。属性与include命令的属性(virtual和file)相同。文件大小的格式由config命令中的sizefmt属性确定。 例如: <!--#fsize file="bottle.gif"--> flastmod命令打印输出文件最后一次修改的日期。属性与include命令的属性(virtual和file)相同。日期格式由config命令的timefmt确定。 例如: <!--#flastmod file="bottle.gif"--> exec命令运行一个shell命令或某个CGI程序。
例如: <!--#exec cgi="workit.pl"--> 除了在CGI中使用的普通环境变量外,在已解析的命令中可以包含如下的变量:
已解析文件的名字。
已解析文件的虚拟路径(例如: /shtml/test.shtml)。
客户发送的任意查找查询的未转意版本,所有shell特殊字符都用字符‘\’进行转意。
当前的日期和本地时间。
以格林尼治标准时间表示的当前日期和时间。
文件最后修改的日期。 Sun Java System Application Server7支持Java web服务器引入的<SERVLET>标记。该标记允许在某个SHTML文件中嵌入servlet输出。启动该行为不需要改变任何配置。如果SSI和servlet都启动了,那么<SERVLET>标记也可用了。 <SERVLET>标记的语法与SSI命令的语法略有不同,它与<APPLE>标记的语法很像: <servlet
code=code> 代码参数指定servlet的URI,包括web应用程序的背景根。该URI必须与J2EE部署描述文件(web.xml)中的servlet-mapping元素的url-pattern子元素相匹配。 下面的表格对服务器解析的HTML使用的日期和时间格式串作了说明。左边一列列出了格式符号,右边一列解释了符号的含义。
上一部分 | 目录 | 下一部分 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||