SSI技术

    在实际的应用中,如果页面只需显示极少的信息(服务器环境信息,WEB文档相关信息等等),我们为此专门写一个程序显然太耗精力。SSI就可以为我们轻松解决这个问题。

SSIServer Side Include),通常称为“服务器端包含”技术。使用了SSI技术的文件默认的后缀名为.shtmlSSI技术通过在html文件中加入SSI指令让web服务器在输出标准HTML代码之前先解释SSI指令,并把解释完后的输出结果和HTML代码一起返回给客户端。多数项目中,我们主要使用了SSI的包含指令<!--#include virtual="/global/foot.jsp" -->,它的作用类似于JSP中的<jsp:include page="/global/foot.jsp"/>标签。

目前主流web服务器都提供了SSI实现,我们只需要打开SSI功能就可以使用。步骤如下(以Tomcat5.5为例):

1.  $CATALINA_HOME/server/lib/servlets-ssi.renametojar的名称改为servlets-ssi.jar

2.  设置$CATALINA_HOME/conf/context.xml文件,<Context>节点添加privileged="true"属性,该属性指定我们发布的web应用有权限使用容器的servlet。当你如果需要在$CATALINA_HOME/conf/server.xml添加其它web应用时,最好也为<Context>加上privileged="true"属性,如:

<Context debug="0" path="" docBase="E:/website" privileged="true"/>

3.  $CATALINA_HOME/ conf/web.xml开启SSI的功能,Tomcat提供了两种开启SSI的方式:一种是servlet,另一种是filter。这里我们使用Servlet开启SSI功能。如:

<servlet>

<servlet-name>ssi</servlet-name>

   <servlet-class>org.apache.catalina.ssi.SSIServlet</servlet-class>

        部分代码省略

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

接下来,我们通过一个简单的例子看看SSI到底如何使用的。

main.shtml内容

<html xmlns="http://www.w3.org/1999/xhtml"><HEAD>

<TITLE>百姓养生堂</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<!--#include file="head.jsp" -->

<br>中部<br>

<!--#include file="foot.html" -->

</BODY></html>

head.jsp内容:

<%@ page language="java" pageEncoding="UTF-8"%>

这是头部

foot.html内容:

这是尾部

我们在使用SSI指令的时候,必须遵循它的格式。

1. 程序代码:

<!--#指令名称="指令参数“ -->

2. 示例:

<!--#include file="foot.html"-->

3. 说明:

<!-- -->HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。

#include SSI指令之一。

file include的参数, foot.htm为参数值,在本指令中指将要包含的文档名。

4. 注意:

<!--#号间无空格,只有SSI指令与参数间存在空格。

上面的标点="",一个也不能少。

SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

------------------------------------------------

#flastmod #fsize

作用:

#flastmod 文件最近更新日期

#fsize 文件的长度

语法:

<!--#flastmod file="文件名称"-->

<!--#fsize file="文件名称"-->

参数:

file 指定包含文件相对于本文档的位置

virtual 指定相对于服务器文档根目录的位置 /global/foot.html 表示

注意:文件名称必须带有扩展名。

示例:

<!--#flastmod file="foot.html"-->将当前目录下foot.html文件的最近更新日期插入到当前页面

<!--#fsize file="foot.html"-->将当前目录下news.html的文件大小入到当前页面

#echo

作用:将环境变量插入到页面中。

语法:

<!--#echo var="变量名称"-->

示例:

本文档名称:<!--#echo var="DOCUMENT_NAME"--> <br>

你的IP地址:<!--#echo var="REMOTE_ADDR"--> <br>

显示当前文档的虚拟路径:<!--#echo var="DOCUMENT_URI" -->

QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符"/"。例如:<!--#echo var="QUERY_STRING_UNESCAPED" -->

<!--#config timefmt="%Y-%m-%d %a %H:%M:%S"-->

现在时间:<!--#echo var="DATE_LOCAL"--> <br>

Echo 命令:

SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:

<!--#echo var="SERVER_SOFTWARE" --><br>

SERVER_NAME 显示服务器的主机名称,DNS别名或IP地址。例如:

<!--#echo var="SERVER_NAME" --><br>

SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:

<!--#echo var="SERVER_PROTOCOL" --><br>

SERVER_PORT:显示服务器的响应端口。例如:

<!--#echo var="SERVER_PORT" --><br>

REQUEST_METHOD:显示客户端的文档请求方法,包括GET HEAD POST。例如:

<!--#echo var="REQUEST_METHOD" --><br>

REMOTE_HOST:显示发出请求信息的客户端主机名称。

<!--#echo var="REMOTE_HOST" --><br>

REMOTE_ADDR:显示发出请求信息的客户端IP地址。

<!--#echo var="REMOTE_ADDR" --><br>

AUTH_TYPE:显示用户身份的验证方法。

<!--#echo var="AUTH_TYPE" --><br>

REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。

<!--#echo var="REMOTE_USER" -->

#set指令

作用:可给变量赋值,以用于后面的if语句。

语法:

<!--#set var="变量名" value="变量值"-->

示例:

<!--#set var=“varname" value=“liming"-->

#if指令

作用:创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。

语法:

<!--#if expr="$变量名=/"变量值A/""-->

  显示内容

<!--#elif expr="$变量名=/"变量值B/""-->

  显示内容

<!--#else-->

  显示内容

<!--#endif"-->

示例:

<!--#set var="varname" value="b"-->

<!--#if expr="$varname=/"a/""-->

  A

<!--#elif expr="$varname=/"b/"" -->

  B

<!--#else-->

  other

<!--#endif"-->

注意:用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值