`

Tomcat中SSI的配置

阅读更多

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>

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

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/silentbalanceyh/archive/2008/12/04/3444239.aspx

分享到:
评论

相关推荐

    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应用程序。开发者可以通过这些库来处理用户...

    tomcat5.0静态化shtml配置.

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

    ssi 常用jar包

    - 配置Web服务器或应用服务器,启用SSI功能,添加相应的模块或配置项。 - 在HTML文件中插入SSI指令,如`&lt;!--#include virtual="/header.html" --&gt;`。 - 确保服务器正确解析和执行这些指令,将包含的内容插入到...

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

    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;!--#...

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

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

    SSI框架搭建源码

    将这些文件部署到Tomcat或其他Servlet容器,然后连接到`user`数据库,即可运行这个SSI框架搭建的项目。通过查看源码,可以深入理解各组件的工作原理和集成方式,对于提升Java Web开发能力大有裨益。

    ssi 整合 及 jar包

    2. **Java Web环境下的SSI集成**:介绍如何在Tomcat或其他支持SSI的服务器上配置和启用SSI功能。 3. **自定义过滤器**:可能涉及创建一个Servlet过滤器来拦截和处理SSI指令。 4. **jar包管理**:讲解如何使用Maven或...

    eclipse开发的ssi整合struts2+ibatis2.x+spring2.5

    下面将详细介绍如何在Eclipse中进行这个整合,并提供一个适合新手学习的SSSI(Struts2、Spring、iBatis、SSI)整合的Demo。 1. **Struts2框架**: Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java Web...

    基于ssi的小项目

    2. **配置文件**:通常在Web应用的`web.xml`中,需要配置SSI的相关设置,比如启用SSI解析器,指定SSI文件的扩展名等。 3. **HTML页面**:包含SSI指令的HTML文件,如`index.html`。这些文件会被服务器解析,插入动态...

    SSI整合程序实例 权限管理

    用户可能需要将这些文件解压并导入到相应的服务器环境中,如Tomcat、Jetty等,然后配置服务器以启动和运行项目。 综上所述,这个压缩包提供的实例是一个完整的SSI集成项目,专注于权限管理的实现。通过Structs2处理...

Global site tag (gtag.js) - Google Analytics