`
jake0719
  • 浏览: 90376 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Tomcat中SSI的配置

    博客分类:
  • Java
阅读更多

转篇CSDN上的关于SSI的博,有些地方总结的非常不错。

转自:http://blog.csdn.net/silentbalanceyh/archive/2008/12/04/3444239.aspx

 

1. 简介:

   SSI 全称( Server Side Includes )是在 HTML 静态页面中使用的指令,当页面在服务端执行的时候是可以进行服务端解析的。这种方式可以让我们在存在的 HTML 页面里面分块动态生成内容而不在整个执行了 CGI 等服务端技术的基础之上进行动态页面服务。在返回请求的页面(包含SSI指令)前,服务器会处理这些指令,并用处理的结果替换指令,然后把页面返回。我们使用 Tomcat 作为 Http 服务器的时候,我们需要使用 SSI 可以在 Tomcat 添加对 SSI 的支持。

   Tomcat 服务器的 SSI 支持的实现方式和 Apache 里面的 SSI 指令一样,在 Tomcat 里面实现 SSI 支持使用的是一个 Servlet 和一个 Filter Servlet Filter 的基本信息参考 JSP 教程),我们可以使用其中一种方式来进行 SSI 支持的配置,但是不需要两个同时配置,同时配置是否会产生冲突我不太清楚,一般情况下配置一个就可以了。

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

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

   注意: SSI 指令执行 Tomcat 外部的 JVM ,如果我们使用 Java 的安全管理器需要在 calalina.policy 文件里面进行配置。若要使用 SSI Servlet SSI Filter ,直接在服务器的路径 $CATALINA_BASE/conf/web.xml 文件里面将 SSI 的注释去掉。需要注意的是在 Tomcat 服务器里面仅仅只有标记了 privileged Context 可以使用 SSI 功能。( * :当 privileged 设置为 true 的时候,才允许 Tomcat Web 应用使用容器内的 Servlet Tomcat 的文档里面讲了使用的 lib 的域,每个应用程序如果不设置这个属性,是不能访问容器内的 Servlet 的,这里应该指代的是全局的 Servlet

  否则这里会遇到异常:

   java.lang.SecurityException: Filter of class org.apache.catalina.ssi. SSIFilter (SSIServlet) is privileged and cannot be loaded by this web application

2. 服务器配置属性:

在配置 SSI Servlet 的时候需要用到的参数( init parameters )如下:

buffered :是需要将输入保存到缓冲区( 0=false,1=true )默认是 0 false

debue :配置调试日志的记录级别,默认 0

expires SSI 包含某个页面的超时配置,默认行为是所有的 SSI 指令在每一次请求中执行

isVirtualWebappRelative :是针对 Tomcat Context 的根目录(虚拟目录)进行相对路径解析还是针对 Tomcat 的服务器目录进行相对路径解析( 0=false,1=true )默认是 0 ,不使用虚拟目录。

inputEncoding :如果资源不是自身的,资源来自于容器外部,可以针对外部资源进行编码的设置,以什么变法方式输入资源,默认使用的是资源所在平台使用的编码。

outputEncoding SSI 执行结果输出的编码方式,默认是 UTF-8 的。

配置 SSI Filter 的时候需要使用以下参数( init paramters ):

contextType :配置一个可以匹配的正则表达式规则提供给 SSI 执行使用,若自定义自己的匹配规则,需要在 mime 类型里面配置下边的可选项:在 form 里面设置“ mime/type;charset=set ”默认的是“ text/x-server-parsed-html(;.*)?

debug :同上

expires :同上

isVirtualWebappRelative :同上

3. 指令描述

SSI 是被 HTML 文档内需要进行处理的包含部分的 SSI Servlet 调用的。这些指令是 HTML 文档的注释形式,这些指令在将内容发送到客户端之前进行内容的替换。标准格式如下:

<!--#directive [parm=value] -->

这些指令包括:

config 设置日期格式一起被 SSI 处理的其他数据 ( <!--#config timefmt="%B %Y" --> )

echo 将会被变量的值替换掉 ( <!--#echo var="VARIABLE_NAEM" --> )

exec 用来执行服务器端的命令

include 包含某些内容 ( <!--#include virtual="file-name" --> )

flastmod 返回某个文件最后一次修改的时间 ( <!--#flastmod file="filename.shtml" --> )

fsize 返回某个文件的大小 ( <!--#fzie file="filename.shtml" --> )

printenv 返回所有定义的变量 (<!--#printenv -->)

set 用来为定义的变量赋值 ( <!--#set var="foo" value="Bar" --> )

if elif endif else 创建条件分支语句

Apache SSI官方文档

4.SSI Servlet 里面的变量如下:

AUTH_TYPE ——针对用户的认证授权方式: BASIC FORM etc. Tomcat 内的认证方式同步

CONTENT_LENGTH ——从服务器表单传过来的数据长度,字符数目或者数据的字节数

CONTENT_TYPE ——服务器访问呢数据的 MIME 类型,比如“ text/html

DATE_GMT ——目前的时间格式方式使用 GMT

DATE_LOCAL ——目前的时间格式方式设置成为本地时间格式

DOCUMENT_NAME ——当前上下文环境的文件地址

DOCUMENT_URI ——虚拟路径定义的文件地址

GATEWAY_INTERFACE —— CGI 的版本定义:“ CGI/1.1

HTTP_ACCEPT ——一个客户端可以接受的 MIME 类型列表

HTTP_ACCEPT_ENCODING ——客户端可以接受的压缩文件类型的列表

HTTP_ACCEPT_LANGUAGE ——客户端可以支持的语言列表

HTTP_CONNECTION ——管理客户端的连接:是“ Close ”还是“ Keep-Alive

HTTP_HOST ——客户端请求的站点地址

HTTP_REFERER ——客户端请求之前所在的 URL 地址

HTTP_USER_AGENT ——客户使用的浏览器端的请求结果

LAST_MODIFIED ——当前页面上一次访问和修改的时间

PATH_INFO ——访问此 Servlet 的路径信息

PATH_TRANSLATED —— PATH_INFO 提供的 translated 版本

QUERY_STRING ——在 URL 地址 ? 之后的请求参数列表

QUERY_STRING_UNESCAPED ——没有经过编码过的请求参数

REMOTE_ADDR ——用户请求客户端 IP 地址

REMOTE_HOST ——用户发送请求的主机名

REMOTE_PORT ——用户发送请求的端口号

REMOTE_USER ——认证授权需要的发送请求的用户名

REQUEST_METHOD ——请求使用方法: GET 或者 POST

REQUEST_URI ——客户端原来访问请求的 Web 页面的 URI 地址

SCRIPT_FILENAME ——在服务器上当前页面的地址

SCRIPT_NAME ——当前页面的名称

SERVER_ADDR ——服务器所在的 IP 地址

SERVER_NAME ——服务器的主机名或者 IP 地址

SERVER_PORT ——服务器接受请求的端口号

SERVER_PROTOCOL ——服务器处理请求的协议:“ HTTP/1.1

SERVER_SOFTWARE ——服务器响应客户端请求的名称和版本号

UNIQUE_ID ——一旦创建链接过后每一次会话由服务器分配的唯一会话标识( 是不是 SessionID ?我不敢肯定,因为没有做过验证,有可能是有可能不是,不过有一点,此属性和直接和会话相关的。

5. 配置过程:

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" ,然后再启动就不会抛出上边的异常了。

5). 若要解决乱码问题,根据上边文档需要修改 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>

上边参数已经描述详细了:

6. 总结:

  关于 Tomcat 环境下边的 SSI 的配置我就整理了这些,有什么有疑问的地方或者语法错误请指点,来信: silentbalanceyh@126.com

分享到:
评论

相关推荐

    Tomcat配置SSI

    Tomcat配置SSI 使你的服务器支持shtml文件

    tomcat-ssi.rar_SSI

    1. **tomcat-ssi.txt**:很可能包含了具体的Tomcat SSI配置教程或步骤,可能包括配置文件的示例代码。 2. **sdf.txt**:文件名看似不相关,可能是一个临时文件或误放,通常需要查看内容才能确定其用途。 总结来说,...

    SSI必须jar包

    在Web开发中,它可以帮助解析和操作XML数据,为SSI提供数据源或配置信息。 这些jar包组合在一起,构成了一个基本的Web开发环境,支持使用SSI技术构建高效且可扩展的Web应用程序。开发者可以通过这些库来处理用户...

    SSI技术整合

    通过在Tomcat中配置SSI框架,开发人员可以获得一种简洁有效的方式来管理和呈现复杂的Web内容。不仅可以提高网站的性能和可维护性,还能为用户提供更好的用户体验。此外,由于SSI技术的简单性和易用性,即使是初学者...

    Tomcat配置优化(完整版)

    ### Tomcat配置优化知识点 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常见的压缩方式,用于减少HTTP响应体的大小,从而降低网络传输的数据量,提高加载速度。在Tomcat中启用Gzip可以显著提高Web应用的性能...

    tomcat5.0静态化shtml配置.

    本篇文章将详述如何在Tomcat 5.0版本中进行静态化配置,以提高网站性能,尤其是处理SHTML(Server Side Include)文件的效率。 首先,理解静态化配置的重要性。在高流量的网站中,静态化可以极大地减少服务器处理...

    Tomcat性能调优及配置技巧

    ### Tomcat性能调优及配置技巧 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常用的压缩算法,通过将响应的数据进行压缩,可以显著减少数据在网络中的传输量,从而加快页面加载速度,提升用户体验。在Tomcat...

    ssi整合jar包

    2. **启用SSI支持**:在服务器配置文件(如Apache的httpd.conf或Tomcat的server.xml)中开启SSI处理。 3. **编写HTML页面**:在HTML文件中插入SSI指令,如`&lt;!--#include virtual="/header.shtml" --&gt;`。 4. **测试...

    ssi整合基本jar

    3. **Web服务器配置**:学习如何配置Web服务器,比如在Tomcat的`web.xml`中添加过滤器,以便在请求处理过程中解析SSI指令。 4. **安全考虑**:SSI能力可能会带来安全问题,因为它允许执行服务器上的命令。因此,...

    传智播客SSI ppt

    **在Tomcat中配置使用SSI** 在Tomcat 5.5中启用SSI功能,需要进行以下步骤: 1. **修改servlets-ssi.jar**:重命名$CATALINA_HOME/server/lib/servlets-ssi.rename为servlets-ssi.jar。 2. **设置privileged属性**:...

    ssi框架简单搭建。。。

    在这个过程中,你可能会遇到如何解析SSI指令、如何读写文件、如何配置Servlet和Filter等问题。这些问题需要对Java Servlet API和HTTP协议有基本的理解。同时,为了提高性能,可以考虑缓存处理结果,避免每次请求都...

    用maven构建一个最简单的SSI框架

    5. **配置SSI处理**:根据选择的服务器(如Jetty或Tomcat),配置服务器以启用SSI处理。这可能涉及到修改服务器的配置文件,或者在Java代码中进行设置。 6. **测试运行**:使用Maven的命令行工具(如`mvn compile`...

    tomcat6学习笔记【原创】

    2. **配置Tomcat 6**:由于Tomcat本身不直接支持SSI,因此需要通过Apache 2来转发请求给Tomcat。 ##### SSL (Secure Socket Layer) SSL协议用于加密客户端与服务器之间的通信,保证数据传输的安全性。 1. **生成...

    Tomcat调优配置技巧[参考].pdf

    为了减少网络流量,可以在Tomcat配置中启用Gzip压缩。在`server.xml`的`&lt;Connector&gt;`元素中添加以下属性: ```xml compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" ...

    ssi的helloworld例子

    在这个"ssi的helloworld例子"中,我们将探讨如何设置和运行一个基本的SSI示例,以及解决可能遇到的问题,如与Tomcat配置相关的错误。 首先,SSI主要通过在HTML文件中使用特定的指令来实现动态内容的插入,如`&lt;!--#...

    Nginx+tomcat+ssl安装配置手册.pdf

    在Nginx上配置负载均衡,将请求转发到各个Tomcat实例,同时在Tomcat的`server.xml`中设置`jvmRoute`以实现Session同步。 **环境安装:** 1. **Windows安装**:解压Nginx的.zip文件,运行`nginx.exe`启动服务,通过...

    Tomcat调优配置技巧[文].pdf

    在`Connector`配置中,可以通过开启`compression="on"`来启用Gzip压缩,这样可以降低传输的数据量,从而减少网络带宽的消耗。同时,通过`compressionMinSize="2048"`设置最小压缩字节数,只有当响应内容大于这个值时...

Global site tag (gtag.js) - Google Analytics