web server apache tomcat11-13-SSI How To

news/2025/3/22 11:23:45/

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

...

SSI

Server Side Includes (SSI) 是一种在 HTML 页面中放置的指令,在服务器上评估页面时执行。

它们允许您向现有的 HTML 页面添加动态生成的内容,而无需通过 CGI 程序或其他动态技术提供整个页面。

在 Tomcat 中,当您将 Tomcat 用作 HTTP 服务器并且需要 SSI 支持时,可以添加 SSI 支持。通常在开发期间进行这样的操作,当您不想运行诸如 Apache 等网络服务器时。

Tomcat 的 SSI 支持实现了与 Apache 相同的 SSI 指令。有关使用 SSI 指令的信息,请参阅 Apache SSI 介绍。

SSI 支持可作为 servlet 和过滤器提供。您应该使用其中一种来提供 SSI 支持,但不要同时使用两者。

基于 Servlet 的 SSI 支持是使用类 org.apache.catalina.ssi.SSIServlet 实现的。传统上,将此 servlet 映射到 URL 模式 "*.shtml"。

基于过滤器的 SSI 支持是使用类 org.apache.catalina.ssi.SSIFilter 实现的。传统上,将此过滤器映射到 URL 模式 ".shtml",尽管它可以映射到 "",因为它将基于 MIME 类型选择性地启用/禁用 SSI 处理。contentType 初始参数允许您将 SSI 处理应用于 JSP 页面、JavaScript 或任何其他您希望的内容。

默认情况下,Tomcat 中禁用了 SSI 支持。

安装

注意 - SSI 指令可用于执行Tomcat JVM 外部的程序。

要使用 SSI servlet,请从 $CATALINA_BASE/conf/web.xml 中删除围绕 SSI servlet 和 servlet-mapping 配置的 XML 注释。

要使用 SSI 过滤器,请从 $CATALINA_BASE/conf/web.xml 中删除围绕 SSI 过滤器和 filter-mapping 配置的 XML 注释。

只有标记为特权的上下文才能使用 SSI 功能(请参阅 Context 元素的 privileged 属性)。

Servlet 配置

有几个 servlet init 参数可用于配置 SSI servlet 的行为。

  • buffered - 此 servlet 的输出是否应该被缓冲?(0=false, 1=true)默认值为 0(false)。
  • debug - 此 servlet 记录的消息的调试详细级别。默认为 0。
  • expires - 具有 SSI 指令的页面过期之前的秒数。默认行为是为每个请求评估所有 SSI 指令。
  • isVirtualWebappRelative - "虚拟" SSI 指令路径是否应被解释为相对于上下文根,而不是服务器根?默认值为 false。
  • inputEncoding - 如果无法从资源本身确定编码,则假定用于 SSI 资源的编码。默认为默认平台编码。
  • outputEncoding - 用于 SSI 处理结果的编码。默认为 UTF-8。
  • allowExec - 是否启用 exec 命令?默认为 false。

过滤器配置

有几个过滤器 init 参数可用于配置 SSI 过滤器的行为。

  • contentType - 必须匹配的正则表达式模式,然后才能应用 SSI 处理。在构建自己的模式时,不要忘记 MIME 内容类型后面可能跟随的可选字符集,格式为 "mime/type; charset=set"。默认为 "text/x-server-parsed-html(;.*)?"。
  • debug - 此过滤器记录的消息的调试详细级别。默认为 0。
  • expires - 具有 SSI 指令的页面过期之前的秒数。默认行为是为每个请求评估所有 SSI 指令。
  • isVirtualWebappRelative - "虚拟" SSI 指令路径是否应被解释为相对于上下文根,而不是服务器根?默认值为 false。
  • allowExec - 是否启用 exec 命令?默认为 false。

指令

通过将 SSI 指令嵌入到由 SSI servlet 处理的 HTML 文档中来调用 Server Side Includes。指令采用 HTML 注释的形式。将指令替换为在将页面发送到客户端之前解释它的结果。指令的一般形式为:

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

指令包括:

  • config - 用于设置 SSI 错误消息、由 SSI 处理的文件大小和日期格式的 SSI 错误消息。
  • echo - 将被变量的值替换。
  • exec - 用于在主机系统上运行命令。
  • include - 插入内容。
  • flastmod - 返回文件上次修改的时间。
  • fsize - 返回文件大小。
  • printenv - 返回所有已定义变量的列表。
  • set - 用于将值赋给用户定义的变量。
  • if、elif、endif、else - 用于创建条件部分。

有关使用 SSI 指令的更多信息,请参阅 Apache SSI 介绍。

变量

SSI 变量通过 jakarta.servlet.ServletRequest 对象上的请求属性实现,并不限于 SSI servlet。以 "java."、"javax."、"sun" 或 "org.apache.catalina.ssi.SSIMediator." 开头的变量名称为保留变量,不能使用。

SSI servlet 当前实现了以下变量:

(变量名 - 描述)

  • AUTH_TYPE - 用户的身份验证类型:BASIC、FORM 等。

  • CONTENT_LENGTH - 从表单传递的数据的长度(以字节或字符数)。

  • CONTENT_TYPE - 查询数据的 MIME 类型,例如 "text/html"。

  • DATE_GMT - GMT 中的当前日期和时间。

  • DATE_LOCAL - 本地时区中的当前日期和时间。

  • DOCUMENT_NAME

    • 当前文件。
  • DOCUMENT_URI - 文件的虚拟路径。

  • GATEWAY_INTERFACE - 服务器使用的通用网关接口的修订版本(如果已启用):"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 的翻译版本。

  • QUERY_STRING - URL 中 "?" 后面的查询字符串。

  • QUERY_STRING_UNESCAPED - 所有已解码的查询字符串,其中所有 shell 元字符都已使用 "" 转义。

  • REMOTE_ADDR - 发出请求的用户的远程 IP 地址。

  • REMOTE_HOST - 发出请求的用户的远程主机名。

  • REMOTE_PORT - 发出请求的用户的远程 IP 地址的端口号。

  • REMOTE_USER - 用户的经过身份验证的名称。

  • REQUEST_METHOD - 发出信息请求的方法:"GET"、"POST" 等。

  • REQUEST_URI - 客户端最初请求的网页。

  • SCRIPT_FILENAME - 服务器上当前网页的位置。

  • SCRIPT_NAME - 网页的名称。

  • SERVER_ADDR - 服务器的 IP 地址。

  • SERVER_NAME - 服务器的主机名或 IP 地址。

  • SERVER_PORT - 服务器接收请求的端口号。

  • SERVER_PROTOCOL - 服务器使用的协议。例如,"HTTP/1.1"。

  • SERVER_SOFTWARE - 正在响应客户端请求的服务器软件的名称和版本。

  • UNIQUE_ID - 用于标识当前会话的令牌(如果已建立会话)。

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/ssl-howto.html


http://www.ppmy.cn/news/1435353.html

相关文章

设计模式学习笔记 - 开源实战四(下):总结Spring中用到的11种设计模式

概述 上篇文章&#xff0c;讲解了 Spring 中支持扩展功能的两种设计模式&#xff1a;观察者模式和模板模式。这两种模式帮助我们创建扩展点&#xff0c;让框架的使用者在不修改源码的情况下&#xff0c;基于扩展点定制化框架功能。 实际上&#xff0c;Spring 框架中用到的设计…

【03-掌握Scikit-learn:深入机器学习的实用技术】

文章目录 前言数据预处理缺失值处理数据缩放特征选择模型训练参数调整模型评估总结前言 经过了对Python和Scikit-learn的基础安装及简单应用,我们现在将更深入地探究Scikit-learn的实用技术,以进一步提升我们的数据科学技能。在本文中,我们将涵盖数据预处理、特征选择、模型…

Edge浏览器下载文件提示 “无法安全下载” 的解决方法

提示如下&#xff1a; 虽然我们可以通过 "保留" 进行下载&#xff0c;但是每次需要选择&#xff0c;比较麻烦 解决方法&#xff1a; 1、打开注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft 2、创建2个 "项" Edge\InsecureContentAllowedForUrls…

Spring Boot入门(21):使用Spring Boot和Log4j2进行高效日志管理:配置详解

Spring Boot 整合 Log4j2 前言 Log4j2是Apache软件基金会下的一个日志框架&#xff0c;它是Log4j的升级版。与Log4j相比&#xff0c;它在性能和功能上有着极大的提升。Spring Boot本身已经默认集成了Logback作为日志框架&#xff0c;但如果需要使用Log4j2来替代Logback&#…

Kubernetes(K8S)特性有哪些?

Kubernetes简介 Kubernetes是一个开源的容器编排引擎&#xff0c;用于自动部署、扩展和管理容器化应用程序。它提供了一个平台来管理容器化应用程序的部署、扩展、自动化操作、服务发现和负载均衡等功能&#xff0c;让开发者能够更轻松地管理和运行容器化应用程序。 Kubernet…

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请…

OneFlow 概念清单:了解下一代深度学习框架的核心特性

OneFlow是新兴的深度学习框架&#xff0c;备受关注。本文将带你逐步了解OneFlow的核心概念、特性以及与其他深度学习框架的比较。通过本文&#xff0c;你将深入了解OneFlow为什么备受瞩目&#xff0c;以及如何利用它来构建高效的深度学习模型。 1. OneFlow简介 OneFlow是由中…

绿色便携方式安装apache+mysql+tomcat+php集成环境并提供控制面板

绿色便携方式安装带控制面板的ApacheMariaDBTomcatPHP集成环境 目录 绿色便携方式安装带控制面板的ApacheMariaDBTomcatPHP集成环境[TOC](目录) 前言一、XAMPP二、安装和使用1.安装2.使用 三、可能的错误1、检查端口占用2、修改端口 前言 安装集成环境往往配置复杂&#xff0c…