Servlet 2.4 规范之第四篇:Servlet上下文
SRV.3.1 ServletContext接口说明
ServletContext接口定义了运行servlet的web应用中和servlet相关的视图信息。容器提供者负责提供ServletContext的一套具体实现。通过ServletContext对象,servlet能记录事件、获得资源引用,以及设置和保存当前context上其他servlet的一些属性信息。
ServletContext以web应用的某一路径为根节点,例如,servlet上下文能写成http://www.mycorp.com/catalog。所有起始于/catalog路径的请求,也就是上下文路径,都会被路由到和此ServletContext相关联的web应用上。
SRV.3.2 ServletContext接口的作用域
部署在容器中的每一个web应用都会有一个对应的ServletContext实例。如果容器是分布在多个虚拟机中,那么web应用会对应每一个JVM各有一个ServletContext实例。
不作为web应用的组成部分部署的servlet,会划分到默认的web应用下,并且也有一个默认的ServletContext。在分布式容器里,默认的ServletContext不作为分布式处理,它能且仅能存在于一个JVM中。
SRV.3.3 初始化参数
ServletContext接口的以下方法允许servlet访问context的初始化参数,当然,这些参数由应用开发人员在部署描述符中指定。
• getInitParameter
      • getInitParameterNames
初始化参数主要用于传递一些设置类的信息,典型的例子就是设置web管理员的email地址,或者阀值控制系统的名字等。
SRV.3.4 Context属性
servlet可以通过名值对绑定一些属性对象。任何绑定在上下文中的属性都可以被同一web应用下的其他servlet访问。ServletContext接口的下述4个方法允许访问这些功能:
• setAttribute
      • getAttribute
      • getAttributeNames
      • removeAttribute
SRV.3.4.1 分布式容器中的Context属性
Context属性定位于创建他们的JVM,这使得ServletContext属性不会以分布式容器的共享内存方式使用。当运行在分布式环境中的servlet需要共享数据时,这些数据应该放在session中,存储在数据库里,或者放在EJB组件中。
SRV.3.5 资源
ServletContext接口提供了访问web应用下静态内容的能力,包括HTML、GIF和JPEG文件,对应方法如下所述:
• getResource
      • getResourceAsStream
getResource和getResourceAsStream方法接收以正斜杠“/”引导的字符串作为参数,该参数指明从上下文的根目录开始找对应的资源,被找的文件必须存在与服务器的文件系统系统上、war包、远程服务器,或者其他位置。
这两个方法不能用于访问动态内容,例如,当调用getResource("/index.jsp")时将返回jsp页面的源码,而不是你所期望的jsp页面的正常执行结果。
web应用中能通过getResourcePaths(String path)访问的所有资源列表,以及这个方法的所有语法细节都可以参见本规范的API文档。
SRV.3.6 多主机和servlet context
web服务系统可能支持一个服务器上的多个逻辑主机共享一个IP地址。这种能力有时也叫虚拟主机。在此情况下,每一个逻辑主机必须维护它自己的一套servlet context或servlet contexts。Servlet contexts完全不能被多个虚拟主机共享。
SRV.3.7 关于重载的思考
容器开发商并不一定要实现类重载机制。但一旦实现,就必须确保所有的servlet和类都在同一个类加载器的范围内加载成功。这个要求是为了保证应用程序按照应用开发人员预想的那样去执行。建议开发人员实现对session绑定的所有监听器的支持,以便于获得session终止和重载时的通知信息,并适时对session进行合适处理。
上一代容器创建新的类加载器并加载servlet,不同于类加载器加载servlet上下文中的其他servlet或类文件。这一点理解错误会导致一个servlet 上下文中的引用指向一个不可预期的类或对象,并且产生不可预期的行为。
SRV.3.7.1 临时工作目录
每个servlet上下文都需要一个临时存储目录。servlet容器必须为每一个servlet上下文提供一个单独的私有的临时目录,并且必须使它可以经由javax.servlet.context.tempdir这个上下文属性来访问。这个属性所对应的对象必须是java.io.File类型。
这个要求在很多servlet引擎中都有通用且便捷的实现。当servlet容器重启时它并不需要维护临时工作目录中的内容,但是必须确保一个servlet上下文中临时工作目录的内容对于其他正在运行的servlet上下文是完全不可见的。
文档信息
- 译者:张大爷
- 原文网址:http://www.cnblogs.com/flance/
- 版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
Servlet 2.4 规范之第四篇:Servlet上下文的更多相关文章
- JavaWeb学习总结第四篇--Servlet开发
		Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请 ... 
- Servlet 2.4 规范之第三篇:Servlet生命周期
		SRV.2.3 Servlet生命周期 servlet有着定义良好且明确的生命周期,它定义了servlet以怎样的方式加载和实例化.初始化.怎样处理客户端请求.以及怎样停止服务.生命周期 ... 
- Servlet 2.4 规范之第七篇:过滤器
		过滤器是一套java组件,用于在请求—>资源—>应答的这一过程中即时转换处理负载和头信息. 本章讲述了Servlet 2.4 API中一些类和方法,这些类和方法提供了一套轻量级框架用于过滤 ... 
- Servlet 2.4 规范之第六篇:响应
		响应对象封装了服务端返回给客户端的所有信息.在HTTP协议中,这些信息通过HTTP头和消息体传送. SRV.5.1 缓冲 出于效率考量,servlet容器可以缓冲输出数据,但这并非强制要求.常见 ... 
- Servlet 2.4 规范之第五篇:请求
		request对象封装了来自客户端的所有请求信息.在HTTP协议中,客户端发给服务端的所有信息都是通过request对象的请求头和请求体来传送的. SRV.4.1 HTTP协 ... 
- javaweb回顾第四篇Servlet异常处理
		前言:很多网站为了给用户很好的用户体验性,都会提供比较友好的异常界面,现在我们在来回顾一下Servlet中如何进行异常处理的. 1:声明式异常处理 什么是声明式:就是在web.xml中声明对各种异常的 ... 
- SpringBoot系列教程web篇Servlet 注册的四种姿势
		原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ... 
- Servlet 2.4 规范之第一篇:概览
		写在前面的话: 本系列是对<Java Servlet Specification Version 2.4>的完全翻译,力争但不保证完美表达出英文原文的思想内涵.如有疏漏之处,还 ... 
- Servlet 2.4 规范之第二篇:Servlet接口
		Servlet接口是Servlet API的最核心抽象类.所有的servlets都直接实现了这个接口,或者以更通用的方式继承了这个接口的实现类.Servlet API自带了两个实现了Servlet接口 ... 
随机推荐
- Java 的Throwable、error、exception的区别
			1. 什么是异常? 异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用(NullPointerException).数组下标越界(IndexOutOfBoundsException ... 
- 再生龙备份还原linux系统
			相关下载: Clonezilla再生龙:http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/ tuxboot ... 
- linux中vim永久显示行号、开启语法高亮
			vim ~/.vimrc 进入insert模式,在最后加二行 syntax on set nu! 保存收工. 设置用视图模式的缩进为4个空格 set smartindent set tabstop=4 ... 
- 线段树:CDOJ1591-An easy problem A (RMQ算法和最简单的线段树模板)
			An easy problem A Time Limit: 1000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Pr ... 
- 算法导论 第七章 快速排序(python)
			用的最多的排序 平均性能:O(nlogn){随机化nlogn} 原地址排序 稳定性:不稳定 思想:分治 (切分左右) 学习方式:自己在纸上走一遍 def PARTITION(A,p,r): x = ... 
- selenium2基本控件介绍及其代码
			输入框:input  表现形式: 1.在html中一般为:<input id="user" type="text"> 主要操作: ... 
- Android工具 Hierarchy Viewer 分析
			Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat.它是Android自带的非常有用而且使用简单的工具,可以帮助我 ... 
- Django底层原理简介与安装
			Django环境目录搭建一栏: 利用wsgiref模块封装好的socket搭建服务端: #利用wsgiref模块封装好的socket演示操作(例如accept\recv) #也可以实现socket服务 ... 
- xml和pandas结合处理的一个小例子-待完善
			#!/usr/bin/env python3 # -*- coding:utf-8 -*- import pandas import json import xml.etree.ElementTree ... 
- 九度oj 题目1552:座位问题
			题目描述: 计算机学院的男生和女生共n个人要坐成一排玩游戏,因为计算机的女生都非常害羞,男生又很主动,所以活动的组织者要求在任何时候,一个女生的左边或者右边至少有一个女生,即每个女生均不会只与男生相邻 ... 
