您的位置:首页 > 其它

SSI服务端包含技术

2013-02-21 14:48 225 查看
让tomcat支持ssi

1.把文件$CATALINA_HOME/server/lib/servlets-ssi.renametojar重新命名为$CATALINA_HOME/server/lib/servlets-ssi.jar.

2.在文件$CATALINA_HOME/conf/web.xml中,你需要把两个地方的注释去掉,servlet 声明和servlet mapping。 servlet 声明看起来类似于下面:

<servlet>

<servlet-name>ssi</servlet-name>

...

</servlet>

而servlet mapping看起来类似于下面:

<servlet-mapping>

<servlet-name>ssi</servlet-name>

<url-pattern>*.shtml</url-pattern>

</servlet-mapping>

这些servlet 声明和mapping可以交替地加入到你的Web 应用程序部署描述符中。

SSI基本指令

        1、SSI指令的语法格式如下:

            <!--#element [attribute=value] [attribute=value] ... -->

               这些指令以HTML注释的形式出现,所以如果你没有正确设置SSI,浏览器会忽略这些指令。如果你正确设置了SSI,这些指令会被相应的结果替换。

        2、config

            <!--#config timefmt="%B %Y" -->

            config用来指定返回给客户端浏览器的错误信息、日期和文件大小的格式。

         常用指令:

            <!--#config errmsg="自定义错误信息"-->

            <!--#config sizefmt="显示单位"-->

            <!--#config timefmt="显示格式"-->

         参数:

             errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。

             sizefmt 文件大小显示方式,默认为字节方式("bytes")可以改为千字节方式("abbrev")

             timefmt 时间显示方式,最灵活的配置属性。

         Eg:

             <!--#config errmsg="服务器执行错误,请联系管理员 yiho@126.com,谢谢!"-->

             <!--#fsize file="不存在的文件.htm"-->

             以千字节方式显示文件大小

             <!--#config sizefmt="abbrev"-->

             <!--#fsizefile="news.htm"-->

            以特定的时间格式显示时间

    <!--#config timefmt="%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期"-->

    <!--#echo var="DATE_LOCAL"--> 显示今天是星期几,几月,时区

    <!--#config timefmt="今天%A, %B ,服务器时区是 %z,是"-->

    <!--#echo var="DATE_LOCAL"-->   

3、echo

    echo用来输出变量的值。

     <!--#echo var="VARIABLE_NAME" -->

     <!--#echo var="变量名称"-->

    本文档名称:程序代码:

     <!--#echo var="DOCUMENT_NAME"-->

    现在时间:程序代码:

     <!--#echo var="DATE_LOCAL"-->

    你的IP地址是程序代码:

     <!--#echo var="REMOTE_ADDR"-->

4、exec

   <!--#exec cmd="COMMOND" -->

   exec用来执行命令。 将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。

    <!--#exec cmd="文件名称"-->

    <!--#exec cgi="文件名称"-->

    <!--#exec cmd="文件名称"-->

    <!--#exec cgi="文件名称"-->

   参数:

    cmd 常规应用程序

    cgi CGI脚本程序

   Eg:

    <!--#exec cmd="cat /etc/passwd"-->将会显示密码文件

    <!--#exec cmd="dir /b"-->将会显示当前目录下文件列表

    <!--#exec cgi="/cgi-bin/gb.cgi"-->将会执行CGI程序gb.cgi。

    <!--#exec cgi="/cgi-bin/access_log.cgi"-->将会执行CGI程序access_log.cgi。

   注意:

    从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。

   禁止方法:

    .Apache,将access.conf中的"Options Includes ExecCGI"这行代码删除;

    .在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元数据库;

5、flastmod

   <!--#flastmod file="FILE_NAME" -->

   flastmod返回FILE_NAME所代表的文件的最后修改时间。

   Eg:

    <!--#flastmod file="news.htm"-->

     将当前目录下news.htm文件的最近更新日期插插入到当前页面

6、fsize

   <!--#fsize file="FILE_NAME" -->

   fsize返回FILE_NAME所代表的文件的大小。

   <!--#flastmod file="文件名称"-->

   <!--#fsize file="文件名称"-->

   参数:

    file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档

    virtual 指定相对于服务器文档根目录的位置 如 /hoyi/info.txt 表示

   注意:

    文件名称必须带有扩展名。

   Eg:

    <!--#fsize file="news.htm"-->

     将当前目录下news.htm的文件大小入到当前页面

7、include

   <!--#include file="文件名称"-->

   <!--#include virtual="文件名称"-->

   include插入FILE_NAME所代表的文件的内容。

   file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目   录下的的nav_head.htm文档,则为file="nav_head.htm"。

   virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file="/hoyi/nav_head.htm"

   参数:

    file 指定包含文件相对于本文档的位置

    virtual 指定相对于服务器文档根目录的位置

   注意:

    1、文件名称必须带有扩展名。

    2、被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便

8、printenv

   <!--#printenv -->

    printenv返回所有定义的变量的列表。

9、set

   <!--#set var="VARIABLE_NAME" value="VARIABLE_VALUE" -->

   set用来自定义变量。在SSI中有许多标准的变量(如DATE_LOCAL),其中也包括对于CGI程序有效的环境变量。

10、if elif endif else

   if elif endif else用来条件选择。

   #if

   作用: 创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。

     语法: 程序代码:

    <!--#if expr="$变量名="变量值A""-->

    显示内容

     <!--#elif expr="$变量名="变量值B""-->

    显示内容

     <!--#else-->

    显示内容

     <!--#endif"-->

    Eg:

     <!--#if expr="$SERVER_NAME="hoyi.zb169.net""-->

      中华E搜网http://www.eshoo.com.cn

     <!--#elif expr="$SERVER_NAME="linux.cqi.com.cn"" -->

      中华E搜网http://www.eshoo.com.cn/bbs

     <!--#else-->

      中华E搜网http://www.eshoo.com.cn

     <!--#endif"-->

注意: 用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。

 

六、普通用法

1、下面是一些比较常规的SSI的用法:

   最后修改时间

    有两种方法:

    This file last modified <!--#flastmod file="ssi.shtml" -->

    This file last modified <!--#echo var="LAST_MODIFIE
4000
D" -->

   包含一个footer

    <!--#include virtual="/footer.html" -->

   设置errmsg

    <!--#config errmsg="[error message!]" -->

   设置sizefmt

    <!--#config sizefmt="bytes|abbrev" -->

   执行命令

   <!--#exec cmd="dir" -->

2、高级SSI

   XSSI(Extended SSI)是一组高级SSI指令,内置于Apache 1.2或更高版本的mod-include模块之中。

    其中可利用的的指令有:

    <!--#printenv-->

    <!--#printenv-->

    <!--#printenv-->

    <!--#printenv-->

   作用: 显示当前存在于WEB服务器环境中的所有环境变量。

   (1)#set

    作用:可给变量赋值,以用于后面的if语句。

    语法:程序代码:

      <!--#set var="变量名"value="变量值"-->

    参数:无

    示例: 程序代码:

     <!--#set var="color"value="红色"-->

     SSI允许自定义变量,这些变量可以用来进行比较和条件判断。

    定义变量

     <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

    条件表达式

     <!--#if expr="test_condition" -->

     <!--#elif expr="test_condition" -->

      <!--#else -->

     <!--#endif -->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: