一、介绍:
SSI是Server Side Includes的缩写,是嵌入到HTML页面的一组指令的集合。在返回请求的页面(包含SSI指令)前,服务器会处理这些指令,并用处理的结果替换指令,然 后把页面返回。这样就允许在HTML页面中添加动态产生的内容。
SSI是向页面中添加小的信息片段的很好的方法。如果页面的大部分都是产生的则需要选择其它的解决方案。
二、主要用途
目前,主要有以下几种用用途:
1、显示服务器端环境变量<#echo>
2、将文本内容直接插入到文档中<#include>
3、显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
4、直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式) 高级SSI<XSSI>可设置变量使用if条件语句。
三、设置Tomcat
Tomcat对SSI提供了支持,但在默认的情况下这种支持是关闭的。如果你用Tomcat做为HTTP服务器并且需要SSI,那么需要自己来设置。
四、设置方法如下:
在$CATALINA_BASE/server/lib/目录下找到servlets-ssi.renametojar文件
将这个文件重命名为servlets-ssi.jar
在$CATALINA_BASE/conf/目录下找到web.xml文件
使用SSI Servlet就删除在SSI servlet和servlet-mapping周围的注释
使用SSI filter就删除在SSI filter和filter-mapping周围的注释
五、基本指令
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_MODIFIED" -->
包含一个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 -->
分享到:
相关推荐
Tomcat配置SSI 使你的服务器支持shtml文件
标题 "tomcat-ssi.rar_SSI" 暗示了这个压缩包与Tomcat服务器配置有关,特别是关于Server Side Include(SSI)的功能。SSI是一种在Web服务器端处理动态内容的技术,允许开发者在HTML页面中嵌入动态内容,如时间戳、...
2. **SSI指令**:SSI指令以`<!--#`开头,`-->`结尾,例如`<!--#include virtual="header.html" -->`用于在页面中包含其他文件。还有`<!--#exec cmd="..." -->`用于执行系统命令,`<!--#config timefmt="%Y-%m-%d" --...
- **配置SSI处理**:Tomcat使用Jasper引擎处理JSP和SHTML。确保Jasper配置允许SSI处理。在`conf/server.xml`的`Host`元素内,找到`Context`元素,并添加`useServletForServletJspFile="true"`属性。例如: ```xml ...
而Nginx中通过SSI指令配置可以灵活控制SSI支持,实现对动态内容的高效管理。需要注意的是,由于SSI是在服务器端处理的,因此对服务器性能有一定要求,且不应当用于处理安全性要求较高的内容,因为可能会增加XSS(跨...
首先,我们来理解SSI的基本语法。SSI的指令通常以"<!--#指令 参数 -->"的形式存在于HTML文件中。例如,`<!--#include virtual="header.html" -->`这条指令会将指定路径的header.html文件内容插入到当前页面。这里的`...
要使Apache服务器支持SHTML和SSI,你需要进行以下配置步骤: 1. **编辑httpd.conf配置文件**: 打开Apache的主配置文件`httpd.conf`,通常位于`/etc/httpd/conf`或`/etc/apache2/conf`目录下。使用文本编辑器打开...
6. **错误处理**:学习如何调试和处理SSI相关的错误,例如文件找不到、指令语法错误等。 7. **与Java框架集成**:如果你正在使用Spring、Struts或其他Java Web框架,了解如何将SSI整合进这些框架的视图层。 8. **...
#### 四、开启tomcat的SSI功能(用来支持shtml) **配置方法**: 在`server.xml`中添加`<Engine>`标签下的`<Host>`标签内,加入如下配置: ```xml ``` 通过加入`<Valve>`标签并设置`className`属性,启用SSI...
### STARTER配置SSI编码器详解 #### 一、引言 在工业自动化领域,编码器作为重要的传感器之一,被广泛应用于各种控制系统中。其中,SSI(Synchronous Serial Interface)编码器因其高精度、高可靠性的特点,在许多...
2. **SSI指令**:学习各种可用的SSI指令,包括`include`(包含文件)、`config`(设置SSI配置选项)、`exec`(执行外部程序)和`printenv`(打印环境变量)等。 3. **虚拟路径与绝对路径**:理解在`include`指令中...
- 如果服务器未正确配置 SSI,那么 SHTML 文件中的 SSI 指令将被当作普通的 HTML 注释处理。 总结而言,SHTML 是一种简单而强大的技术,能够显著提升静态网页的功能性和可维护性。通过本文的介绍,希望读者能够对 ...
5. **配置文件**:SSI可以通过.shtml扩展名或者服务器配置来启用,可能还包括自定义指令。这个Demo可能会包含如何设置和配置SSI的说明。 6. **图片和文字说明**:由于描述中提到有图片和文字说明,所以Demo不仅限于...
2. **配置Tomcat 6**:由于Tomcat本身不直接支持SSI,因此需要通过Apache 2来转发请求给Tomcat。 ##### SSL (Secure Socket Layer) SSL协议用于加密客户端与服务器之间的通信,保证数据传输的安全性。 1. **生成...
学习这个示例,开发者可以理解SSI的基本工作原理,如何在服务器上配置它,以及如何在HTML文件中编写和使用SSI指令。这对于维护大量静态网页或者需要进行轻量级动态更新的场景非常有用。尽管现代Web开发倾向于使用更...
通过在Tomcat中配置SSI框架,开发人员可以获得一种简洁有效的方式来管理和呈现复杂的Web内容。不仅可以提高网站的性能和可维护性,还能为用户提供更好的用户体验。此外,由于SSI技术的简单性和易用性,即使是初学者...