- 浏览: 90376 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
httpping:
谢了
《oracle SQL性能优化》中文电子书 -
phywhm:
多谢多谢,看到这个解决到问题了,Hoho
[Exception... "Not enough arguments [nsIDOMHTMLSel -
qinkangwencai:
我遇到过这个问题,根据你 的方法解决了!万分感谢!
[Exception... "Not enough arguments [nsIDOMHTMLSel -
hn_evian:
不错,谢谢
《oracle SQL性能优化》中文电子书 -
alexyao8:
顶上
[Exception... "Not enough arguments [nsIDOMHTMLSel
转篇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 : 创建条件分支语句
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
发表评论
-
Android2.2模拟器屏幕定制
2010-07-25 23:06 5538Android 模拟器屏幕定制 由于项目需要把Android ... -
spring+struts2+freemarker+hibernate里的openSessionViewFiler
2009-12-09 09:32 0原先在spring+struts1+hibernate架构应用 ... -
用实例揭示notify()和notifyAll()的本质区别
2009-09-15 10:48 3120非常好的教学例子. 转自http://blog.csdn.n ... -
ClassLoader机制
2009-07-01 10:49 0理解Java ClassLoader机制 |用Java说话,人 ... -
JDK5.0垃圾收集优化之--Don't Pause
2009-02-24 15:02 934作者:江南白衣 ,最新版链接:http://blog.csdn ... -
Tomcat5中文文档
2009-02-11 12:55 1007http://tomcat.jaxwiki.org/是它的在线 ... -
新闻被抢~~
2009-01-08 23:03 877Artifactory 2今天发布的新闻被抢 ,呵呵。 话 ... -
Artifactory Maven Repository Manager 2.0 发布
2009-01-08 22:51 1902Artifactory Maven Repository ... -
Tomcat中SSI配置异常的解决办法
2008-12-29 00:32 3447以下异常可能很多人都会碰到,而网上很多解决办法都说得不尽然。 ... -
Mylyn简介——一个不错的eclipse工具
2008-11-25 23:25 5678Mylyn(旧称Mylar)是eclips ... -
Odd Ant error when using the Ant sql task in RAD
2008-11-22 22:53 1383Odd Ant error when using the An ... -
JACL英文文档
2008-11-13 13:14 1064更详尽的英文资料请参考IBM在线文档,或 http://jac ... -
JACL中文文档
2008-11-13 13:06 4077博主注: 最近要写WAS的wsadmin脚本和JACL脚本, ... -
XFire在Websphere Application Server5.1里运行的空指针异常的解决
2008-10-31 23:02 3143最近在部署Server方面碰到了一个非常棘手的问题,在WAS5 ...
相关推荐
Tomcat配置SSI 使你的服务器支持shtml文件
1. **tomcat-ssi.txt**:很可能包含了具体的Tomcat SSI配置教程或步骤,可能包括配置文件的示例代码。 2. **sdf.txt**:文件名看似不相关,可能是一个临时文件或误放,通常需要查看内容才能确定其用途。 总结来说,...
在Web开发中,它可以帮助解析和操作XML数据,为SSI提供数据源或配置信息。 这些jar包组合在一起,构成了一个基本的Web开发环境,支持使用SSI技术构建高效且可扩展的Web应用程序。开发者可以通过这些库来处理用户...
通过在Tomcat中配置SSI框架,开发人员可以获得一种简洁有效的方式来管理和呈现复杂的Web内容。不仅可以提高网站的性能和可维护性,还能为用户提供更好的用户体验。此外,由于SSI技术的简单性和易用性,即使是初学者...
### Tomcat配置优化知识点 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常见的压缩方式,用于减少HTTP响应体的大小,从而降低网络传输的数据量,提高加载速度。在Tomcat中启用Gzip可以显著提高Web应用的性能...
本篇文章将详述如何在Tomcat 5.0版本中进行静态化配置,以提高网站性能,尤其是处理SHTML(Server Side Include)文件的效率。 首先,理解静态化配置的重要性。在高流量的网站中,静态化可以极大地减少服务器处理...
### Tomcat性能调优及配置技巧 #### 一、Tomcat设置Gzip,减少网络流量 Gzip是一种常用的压缩算法,通过将响应的数据进行压缩,可以显著减少数据在网络中的传输量,从而加快页面加载速度,提升用户体验。在Tomcat...
2. **启用SSI支持**:在服务器配置文件(如Apache的httpd.conf或Tomcat的server.xml)中开启SSI处理。 3. **编写HTML页面**:在HTML文件中插入SSI指令,如`<!--#include virtual="/header.shtml" -->`。 4. **测试...
3. **Web服务器配置**:学习如何配置Web服务器,比如在Tomcat的`web.xml`中添加过滤器,以便在请求处理过程中解析SSI指令。 4. **安全考虑**:SSI能力可能会带来安全问题,因为它允许执行服务器上的命令。因此,...
**在Tomcat中配置使用SSI** 在Tomcat 5.5中启用SSI功能,需要进行以下步骤: 1. **修改servlets-ssi.jar**:重命名$CATALINA_HOME/server/lib/servlets-ssi.rename为servlets-ssi.jar。 2. **设置privileged属性**:...
在这个过程中,你可能会遇到如何解析SSI指令、如何读写文件、如何配置Servlet和Filter等问题。这些问题需要对Java Servlet API和HTTP协议有基本的理解。同时,为了提高性能,可以考虑缓存处理结果,避免每次请求都...
5. **配置SSI处理**:根据选择的服务器(如Jetty或Tomcat),配置服务器以启用SSI处理。这可能涉及到修改服务器的配置文件,或者在Java代码中进行设置。 6. **测试运行**:使用Maven的命令行工具(如`mvn compile`...
2. **配置Tomcat 6**:由于Tomcat本身不直接支持SSI,因此需要通过Apache 2来转发请求给Tomcat。 ##### SSL (Secure Socket Layer) SSL协议用于加密客户端与服务器之间的通信,保证数据传输的安全性。 1. **生成...
为了减少网络流量,可以在Tomcat配置中启用Gzip压缩。在`server.xml`的`<Connector>`元素中添加以下属性: ```xml compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" ...
在这个"ssi的helloworld例子"中,我们将探讨如何设置和运行一个基本的SSI示例,以及解决可能遇到的问题,如与Tomcat配置相关的错误。 首先,SSI主要通过在HTML文件中使用特定的指令来实现动态内容的插入,如`<!--#...
在Nginx上配置负载均衡,将请求转发到各个Tomcat实例,同时在Tomcat的`server.xml`中设置`jvmRoute`以实现Session同步。 **环境安装:** 1. **Windows安装**:解压Nginx的.zip文件,运行`nginx.exe`启动服务,通过...
在`Connector`配置中,可以通过开启`compression="on"`来启用Gzip压缩,这样可以降低传输的数据量,从而减少网络带宽的消耗。同时,通过`compressionMinSize="2048"`设置最小压缩字节数,只有当响应内容大于这个值时...