tomcat7 SSI功能配置

在Tomcat中实现SSI,有两种方式:Servlet和Filter。

实现SSI支持的Servlet实现使用了org.apache.catalina.ssi.SSIServlet,另外需要在Servlet的路径解析里面添加映射规则“*.shtml”。

实现SSI支持的Filter使用了org.apache.calalina.ssi.SSIFilter。另外,在Filter路径解析里面也需要添加映射规则“*.shtml”,而且在Filter配置的时候需要在映射规则里面添加能够执行的mimetype,contentType的初始化参数允许你执行服务器下边的资源。在Tomcat里面默认是禁用了SSI的。

Servlet配置:

(1)修改tomcat根目录下的conf文件夹中的context.xml,修改如下:

<Context privileged="true">  
    <!-- Default set of monitored resources -->  
    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
</Context>  

即在Context 中增加privileged="true"

(2)修改tomcat根目录下的conf文件夹中的web.xml,将SSI的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>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>  
	<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>false</param-value>  
	</init-param>  
	<load-on-startup>4</load-on-startup>  
</servlet>  

 

扫描二维码关注公众号,回复: 248958 查看本文章

取消SSI Servlet的mapping注释,增加*.html,因为我们是在html中引入shtml的,如果不配置*.html,则tomcat不会处理html中的ssi指令

<servlet-mapping>  
	<servlet-name>ssi</servlet-name>  
	<url-pattern>*.shtml</url-pattern>  
	<url-pattern>*.html</url-pattern>  
</servlet-mapping> 

 

Filter配置:

(1)修改tomcat根目录下的conf文件夹中的context.xml,修改如下:

<Context privileged="true">  
    <!-- Default set of monitored resources -->  
    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
</Context>  

即在Context 中增加privileged="true"

 

(2)修改tomcat根目录下的conf文件夹中的web.xml,将SSI的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> 

.若要解决乱码问题,根据上边文档需要修改SSI中的启动参数:添加如下代码:

<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>  

 

参考:http://bsr1983.iteye.com/blog/2253885;
http://blog.csdn.net/l1028386804/article/details/53526786

猜你喜欢

转载自z724130632.iteye.com/blog/2367022