平常都是使用html或jsp,当导入含有shtml的一个web项目时,向平常一样使用Jetty运行,访问到shtml文件时,直接在浏览器上显示出了源码。

查询,使用tomcat发布,修改tomcat的一些配置可以正常访问shtml文件。

注意:在shtml文件中

<!--#include virtual="./include/header.shtml"-->表示的是导入,不是注释信息

发布的配置如下:

1、修改Tomcat的配置文件conf/context.xml,在标签<Content>中添加属性 privileged="true"。

2、修改Tomcat的配置文件conf/web.xml中servlet-name=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>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>
<!-- 下面两个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>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>

然后使用tomcat发布项目,访问带有shtml的项目就不会直接出现源码了(对于在页面中使用<!--# -->引入的文件也能正常显示)。

04-13 20:59