Apache Tomcat关于shtml和SSI技术

Tomcat

http://blog.csdn.net/leftfist/article/details/8520773

http://webdevelop.jzxue.com/shtml/

http://tomcat.apache.org/tomcat-6.0-doc/ssi-howto.html

http://www.blogjava.net/pdw2009/archive/2009/03/06/258270.html

http://blog.csdn.net/poweruser5956/article/details/5595422

Tomcat 6.×里默认ssi配置是注释掉的,要使用SSI,必须去掉该注释。SSI有servlet和filter两种配置。用SSI servlet的话,去掉SSI servlet和servlet mapping的注释。若是用SSI Filter,则要修改三个地方:

  • 去掉filter ssi的注释,;
  • 去掉ssi filter mapping的注释,;
  • 去掉filter ssi mime mapping的注释。

最后关键一步:

修改tomcat_home/conf/context.xml文件里的context标签:

原:

<Context>

修改为

<Context privileged="true">

重启tomcat就ok了。这样也就不必为具体的app里配置context去使用SSI功能了。

此配置在Tomcat 6.0.18版本里通过。

简单SSI测试例子:

index.shtml

<html>

<head/>

<body>

welcome to my site!

Now is <!--#echo var="DATE_LOCAL"-->.

</body>

</html>

网上多数说需要将server/lib/servlet-ssi.renametojar改名为servlet-ssi.jar估计是在很旧的版本中才有这个文件(有待考证),新版本的tomcat中lib目录中的catalina.jar里已经包含了原来servlet-ssi.jar里的class文件。

Apache

关于shtml,shtml是一种基于SSI技术的文件,也就是Server Side Include--SSI 服务器端包含指令,一些Web Server如果有SSI功能的话就会对shtml文件特殊招待,服务器会先扫一次shtml文件看没有特殊的SSI指令存在,如果有的话就按Web Server设定规则解释SSI指令,解释完后跟一般html一起调去客户端。

关于shtm,shtm与shtml的关系和htm与html的关系大致相似,这里就不多说了。

html或htm与shtml或shtm的关系是什么

html或者htm是一种静态的页面格式,也就是说不需要服务器解析其中的脚本,或者说里面没有服务器端执行的脚本,而shtml或者shtm 由于它基于SSI技术,当有服务器端可执行脚本时被当作一种动态编程语言来看待,就如asp、jsp或者php一样。当shtml或者shtm中不包含服务器端可执行脚本时其作用和html或者htm是一样的。

如何使你的Apache服务器支持SSI?

Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例,打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:

# AddType text/html .shtml

# AddOutputFilter INCLUDES .shtml

把这两行前面的#去掉。

然后搜索“Options Indexes FollowSymLinks”

在搜索到的那一行后面添加“ Includes”

即将该行改变为 Options Indexes FollowSymLinks Includes

保存httpd.conf,重起apache即可。

到此我们就完成了对Apache SSI的设置