Tomcat 5.x和6.x支持SSI

在使用Apache Tomcat的默认设置下是不支持SSI功能的,也就是说不支持shtml格式的文件,不过只需做一个简单的配置即可使Apache Tomcat支持SSI功能。下面是配置步骤。
1).先保证Tomcat可以运行,即能够正常启动
2).(5.x版本)服务器根目录下边$TOMCAT_HOME(或者$CATALINA_HOME)/server/lib/目录下边有一个文件:
servlets-ssi.renametojar,将这个文件名更名为一个jar后缀,当然最方便的方法是直接改掉文件后缀,按照Tomcat扫描jar路径类的原理来讲,直接更名为jar应该也是可以的,不过我没尝试过,一般网上最常用的方法是改成:servlets-ssi.jar。(6.x版本)服务器不需要去寻找jar文件了,直接进入下一步操作都可以。
3).找到文件:$TOMCAT_HOME(或者$CATALINA_HOME)/conf/web.xml,这里面不需要我们自己写入SSI Servlet和SSI Filter的配置,首先我们要选择使用哪种方式来配置:
Servlet配置:
  在这个文件里面,找到以下注释代码段,将注释代码段去掉:
Servlet配置——
<!–
    <servlet>
        <servlet-name>ssi</servlet-name>
        <servlet-class>
          org.apache.catalina.ssi.SSIServlet
        </servlet-class>
        <init-param>
          <param-name>buffered</param-name>
          <param-value>1</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
        </init-param>
        <init-param>
          <param-name>expires</param-name>
          <param-value>666</param-value>
        </init-param>
        <init-param>
          <param-name>isVirtualWebappRelative</param-name>
          <param-value>0</param-value>
        </init-param>
        <load-on-startup>4</load-on-startup>
    </servlet>
–>
ServletMapping配置——
<!–
    <servlet-mapping>
        <servlet-name>ssi</servlet-name>
        <url-pattern>*.shtml</url-pattern>
    </servlet-mapping>
–>
Filter配置:
Filter的相关配置——
<!–
    <filter>
        <filter-name>ssi</filter-name>
        <filter-class>
          org.apache.catalina.ssi.SSIFilter
        </filter-class>
        <init-param>
          <param-name>contentType</param-name>
          <param-value>text/x-server-parsed-html(;.*)?</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
        </init-param>
        <init-param>
          <param-name>expires</param-name>
          <param-value>666</param-value>
        </init-param>
        <init-param>
          <param-name>isVirtualWebappRelative</param-name>
          <param-value>0</param-value>
        </init-param>
    </filter>
–>
FilterMapping相关配置——
<!–
    <filter-mapping>
        <filter-name>ssi</filter-name>
        <url-pattern>*.shtml</url-pattern>
    </filter-mapping>
–>
只是Filter配置里面还需要取消另外一个注释,下边的MIME TYPE的服务器支持相关注释
<!–
    <mime-mapping>
        <extension>shtml</extension>
        <mime-type>text/x-server-parsed-html</mime-type>
    </mime-mapping>
–>
  上边的注释取消过后,配置就基本好了,在Tomcat 5.x的版本中配置的时候,到这个地步就结束了,但是在Tomcat 6.x版本中可能还会出现下边的异常:
  java.lang.SecurityException: Filter of class org.apache.catalina.ssi.SSIFilter(SSIServlet) is privileged and cannot be loaded by this web application
4).所以正对这点6.x还有一个步骤,在$TOMCAT_HOME(或者$CATALINA_HOME)/conf/context.xml 文件中在<Context>结点添加一个属性privileged=”true”,exp:<Context privileged=”true”>然后再启动就不会抛出上边的异常了。
5).若要解决乱码问题,根据上边文档需要修改SSI中的启动参数:在代码<load-on-startup>4</load-on-startup>的上面加入如下代码添加如下代码:
<init-param>
        <param-name>inputEncoding</param-name>
        <param-value>utf-8</param-value>
</init-param>
<init-param>
        <param-name>outputEncoding</param-name>
        <param-value>utf-8</param-value>
</init-param>
上边参数已经描述详细了:
注意在IIS6中使用#include file=”../some.shtml”就可以父路径的地包含,但是在apache中file只能是子路径的包含,父路径是用virtral,如:#include virtual=”../some.shtml”

此条目发表在Tomcat分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注