SSI使用入门:

1.什么是SSI技术?

SSI(Serve Side Includes),通常称之为服务器端包含,使用SSI技术文件默认的后缀名为.shtml,SSI技术通过在html文件中加入SSI指令,让服务器端在输出html之前解释SSI指令,并把解释完的结果和html代码一同输出给客户端。SSI指令实在服务器端执行的。

在大部分项目中我们主要使用SSI的包含指令<!--#include virtual="/globle/foot.jsp"-->

标签。

2.为什么要使用SSI技术?

既然jsp中的<jsp:include page="/globle/foot.jsp"/>标准动作,也提供了类似的功能。为什么我们还要使用SSI技术?

主要原因有一下几点:

1,首先SSI技术是通用技术,不局限于运行环境,在java 、dotne 、CGI、ASP、PHP都 可以使用SSI技术。

2,解释SSI指令要比解释JSP的效率要高,因为servlet规范提供了太多的功能。这些功能都需要好servlet引擎一一进行解释,所以效率比较低。

在目前大部分门户网站都是用了SSI技术,解释SSI文件的最佳服务器是Apache Http Server。大型门户网站基本上都采用Apache Server来解释SSI文件

在Tomcat6.x中怎么应用SSI技术:

介绍:

SSI(服务器端包含)放置在HTML页面的指令,他们让你动态生成的内容添加到现有的HTML页面,而无需通过一个CGI程序,或其他动态技术服务整个页面。当你使用Tomcat作为你的HTTP服务器,并且需要SSI支持,你能够在Tomcat下增加SSI支持。通常,这是在开发过程中,当你不想要运行一个象Apache Web服务器(Apache Http Server)。Tomcat的SSI支持实现Apache(Apache Http Server)相同的SSI指令。如果在运营网站的时候应该使用Apache Http Server服务器解释SSI指令,如果使用Tomcat作为解释SSI指令的服务器,虽然可以实现但是效率低。启用SSI支持可以通过一个servlet和Filter,但是你只能选一种方式,要么是servlet或者是filter。

基于servlet的SSI支持已经被实现通过类org.apache.catalina.ssi.SSIServlet。习惯上,servlet的映射URL路径为"*.shtml"。

基于filter的SSI支持已经被实现通过类org.apache.catalina.ssi.SSIFilter。习惯上,servlet的映射URL路径为"*.shtml"。尽管它可以映射到“*”,因为它会选择性地启用/禁用SSI的处理基于MIME类型,contentType的初始化参数允许您应用SSI处理JSP页面,JavaScript,或者你想要的任何其他内容。

在Tomcat默认情况下禁用SSI支持。

环境搭建:

3.警告:

可以使用SSI指令的执行程序到Tomcat JVM外部。如果你是使用Java SecurityManager,这将绕过你的安全策略配置在catalina.policy里。

要使用SSI的servlet,删除在$ CATALINA_BASE / conf / web.xml中SSI servlet和servlet的映射周围的XML注释。

要使用SSI的servlet,删除在$ CATALINA_BASE / conf / web.xml中SSI 过滤器和过滤器的映射周围的XML注释。

只有标记为特权的上下文可以使用SSI功能(见Context元素的特权属性)。在context.xml文件中配置如下:<Context privileged="true"></Context>

4.servlet配置:

有几个servlet初始化参数可用于配置的SSI servlet的行为:

debug:通过这个servlet为日志信息调试详细级别。 Default 0。

expires:在一个带有SSI指令的页面将要过期的秒数,默认的行为是为所有的SSI指令评估每次请求。

isVirtualWebappRelative:SSI指令“virtual”路径被解释为相对与上下文的根目录,而不是服务器的根目录?(0=false, 1=true) Default 0 (false)。

inputEncoding :必须为SSI的资源指定编码,如果不能从资源本身决定。默认值是默认的平台编码。

outputEncoding :用于编码的SSI处理的结果。默认是UTF - 8。

allowExec :exec命令启用了吗?默认值是false

filter配置:

有几个filter初始化参数可用于配置的SSI filter的行为:

contentType :SSI的处理被应用之前,必须匹配一个正则表达式模式。 Default is "text/x-server-parsed-html(;.*)?".

debug :通过这个servlet为日志信息调试详细级别。 Default 0。

expires :在一个带有SSI指令的页面将要过期的秒数,默认的行为是为所有的SSI指令评估每次请求。

isVirtualWebappRelative :SSI指令“virtual”路径被解释为相对的上下文根目录,而不是服务器的根目录?(0=false, 1=true) Default 0 (false)。

allowExec :exec命令启用了吗?默认值是false。

指令:

指令采取的HTML注释的形式,该指令被替换为在发送页面给客户端之前的解释SSI的结果。

指令的一般形式是:<!--#directive [parm=value] -->

config :<!--#config timefmt="%Y-%m-%d %H:%M:%S" -->格式化时间,本身不输出,要放在输出时间指令的上面,才有效。

echo :<!--#echo var="VARIABLE_NAME" -->输出环境变量对应的值,环境变量有SSI提供。

include :<!--#include virtual="file-name" -->和<!--#include file="file-name" -->包含文件。

区别:file文件名是一个相对路径,该路径相对于使用#include文件所在的目录,被包含文件可以是同以目录或者子目录。但不能是上一级目录;

Virtual文件名是web站点的虚拟完整路径,如表示服务器文档根目录下global目录下的foot.jsp,则为<!--#include virtual="/globle/foot.jsp" -->

flastmod :<!--#flastmod file="filename.shtml" -->文件最后修改时间。

fsize :<!--#fsize file="filename.shtml" -->返回文件大小。

printenv: <!--#printenv -->返回所有定义的变量列表。

set :<!--#set var="foo" value="Bar" -->把值赋给定义的变量。此外仅设置值字面上一样,除了仅仅简单的设置值外,你可以使用任何其他变量,包括环境变量。您将指定的东西是一个变量,而不是一个简单字符串,通过在变量的名称前加上美元符号。

if elif endif else :类似于java的条件语句。

例如:

为了把美元符号放入变量的值,你需要用一个反斜线转译美元符号

<!--#set var="cost" value="\$100" -->

<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

<!--#if expr="$DATE_LOCAL = /Monday/" -->

<p>Meeting at 10:00 on Mondays</p>

<!--#elif expr="$DATE_LOCAL = /Friday/" -->

<p>Turn in your time card</p>

<!--#else -->

<p>Yoga class at noon.</p>

<!--#endif -->

环境变量:

Variable Name

Description

AUTH_TYPE

The type of authentication used for this user: BASIC, FORM, etc.

CONTENT_LENGTH

The length of the data (in bytes or the number of characters) passed from a form.

CONTENT_TYPE

The MIME type of the query data, such as "text/html".

DATE_GMT

Current date and time in GMT

DATE_LOCAL

Current date and time in the local time zone

DOCUMENT_NAME

The current file

DOCUMENT_URI

Virtual path to the file

GATEWAY_INTERFACE

The revision of the Common Gateway Interface that the server uses if enabled: "CGI/1.1".

HTTP_ACCEPT

A list of the MIME types that the client can accept.

HTTP_ACCEPT_ENCODING

A list of the compression types that the client can accept.

HTTP_ACCEPT_LANGUAGE

A list of the languages that the client can accept.

HTTP_CONNECTION

The way that the connection from the client is being managed: "Close" or "Keep-Alive".

HTTP_HOST

The web site that the client requested.

HTTP_REFERER

The URL of the document that the client linked from.

HTTP_USER_AGENT

The browser the client is using to issue the request.

LAST_MODIFIED

Last modification date and time for current file

PATH_INFO

Extra path information passed to a servlet.

PATH_TRANSLATED

The translated version of the path given by the variable PATH_INFO.

QUERY_STRING

The query string that follows the "?" in the URL.

QUERY_STRING_UNESCAPED

Undecoded query string with all shell metacharacters escaped with "\"

REMOTE_ADDR

The remote IP address of the user making the request.

REMOTE_HOST

The remote hostname of the user making the request.

REMOTE_PORT

The port number at remote IP address of the user making the request.

REMOTE_USER

The authenticated name of the user.

REQUEST_METHOD

The method with which the information request was issued: "GET", "POST" etc.

REQUEST_URI

The web page originally requested by the client.

SCRIPT_FILENAME

The location of the current web page on the server.

SCRIPT_NAME

The name of the web page.

SERVER_ADDR

The server's IP address.

SERVER_NAME

The server's hostname or IP address.

SERVER_PORT

The port on which the server received the request.

SERVER_PROTOCOL

The protocol used by the server. E.g. "HTTP/1.1".

SERVER_SOFTWARE

The name and version of the server software that is answering the client request.

UNIQUE_ID

A token used to identify the current session if one has been established.

SSI是当然不是对CGI或其他的技术用于生成动态网页的替代品,不过这是一个很好的方式对于往页面加入少量的动态的内容,并且不用做额外的工作。

转载于:https://www.cnblogs.com/ITGirl00/archive/2013/02/23/SSI.html

SSI(Server Side Includeds)使用详解(转载)相关推荐

  1. SQL Server事务隔离级别详解

    SQL Server事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用 ...

  2. SQL Server DBA工作内容详解

    原文:SQL Server DBA工作内容详解 在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是最重要的角色. ...

  3. SQL Server 2005 常用数据类型详解

    SQL Server 2005 常用数据类型详解 [b]1. 字符串数据类型[/b] char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字 ...

  4. Windows Server 2008终端服务详解系列5:用ISA 发布SH-TSG

    Windows Server 2008终端服务详解系列5:用ISA 发布SH-TSG 前言: 本系列将全面的介绍Windows Server 2008终端服务,从概念到功能,从安装到配置都会以通俗易懂 ...

  5. linux rpm安装zabbix,CentOS 7上安装Zabbix Server 3.0 图文详解

    CentOS 7上安装Zabbix Server 3.0 图文详解 1.查看系统信息. cat /etc/RedHat-release CentOS Linux release 7.0.1406 (C ...

  6. Windows Server 2008终端服务详解系列3:结合MOSS 2007部署TS Web Access

    Windows Server 2008终端服务详解系列3:结合MOSS 2007部署TS Web Access 前言: 本系列将全面的介绍Windows Server 2008终端服务,从概念到功能, ...

  7. Arcgis连接sql server发布地图服务详解

    Arcgis+sql server发布地图服务详解 1.ArcGIS中创建企业地理数据库 通过ArcGIS创建一个地理数据库至SQLServer数据库中. 1.需要有一个登陆ArcGIS的管理员账号, ...

  8. spring依赖注入原理详解(转载)

    spring依赖注入原理详解----转载 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所 ...

  9. mysql错误码:2006-MySQL server has gone away详解

    mysql错误码:2006-MySQL server has gone away详解 1.背景 代码测试过程中发现程序运行一段时间之后mysql数据库就报2006的错误码,程序重启之后恢复正常. 2. ...

最新文章

  1. 零起点学算法10——求圆柱体的表面积
  2. 关于bash的执行过程
  3. VS2010项目生成时提示错误“在证书存储区中找不到清单签名证书”?
  4. Log4j2突发重大漏洞
  5. 神州12号航天员确定:住110米“大平层” 有120种美食
  6. 黑鲨游戏手机2 Pro外观设计曝光:或将新增两条LED灯带
  7. 计算机主机的声音线是哪个好,四大常用视频接口对比,你的电脑是哪种接口?...
  8. 美国《国家地理》:年度十大新闻
  9. python文件都是脚本吗_脚本语言系列之Python | Python文件IO
  10. winFrom窗体样式
  11. 数据结构和算法——八种常用的排序算法----直接插入排序和希尔排序
  12. android系统存储空间不足怎么办,手机内存不足怎么办?手机内存不足如何清理?...
  13. css3图片上下浮动动画
  14. Python基础:第25课——使用类和实例
  15. 「Unity3D」(9)自定义编辑器菜单扩展总结
  16. 20张图带你彻底了解ReentrantLock加锁解锁的原理
  17. 框架揭秘_揭秘类型系统
  18. GD32F103C8T6点灯
  19. Revit中建筑柱和结构柱的区分以及梁的搭建之学习记录
  20. 自制wifi信号放大器

热门文章

  1. PETERSON互斥算法解析
  2. 骨牌铺方格的3种做法
  3. js系列教程2-对象、对象属性全解
  4. 信息论与贝叶斯(二)
  5. Spyder has encountered an internal problem!问题解决过程
  6. win7 java注册表_使用JAVA和JNA在64位Win 7上读/写Windows注册表
  7. Keras源码下载记录
  8. windows 端口映射
  9. 用ng-view创建单页APP
  10. Welcome-to-Swift-05控制流(Control Flow )