文档章节

Servlet Specification V2.4——SRV.3 Servlet Context

悟空太多啦
 悟空太多啦
发布于 2015/12/20 23:53
字数 1282
阅读 7
收藏 0
点赞 0
评论 0

SRV.3 Servlet Context

SRV.3.1 Introduction to the ServletContext Interface

        ServletContext接口定义了一个web应用程序的servlet视图,这些servlet就运行在此web应用程序中。Container的提供者负责提供container中ServletContext接口的实现。使用ServletContext对象,servlet可以记录时间,取得资源的引用URL,设置并存储context中其它servlet也可以可访问的attribute(set and store attributes that other servlets in the context can access)。

        ServletContext被root于web server中一个已知的路径。例如:一个servlet context可以被配置在http://www.google.com/catalog。作为context path,以request路径/catalog开始的所有请求,都会发送至与此ServletContext相关联的web application。

 

 

SRV.3.2 Scope of a ServletContext Interface

        每个发布到container中的web application都有一个ServletContext的实例与之相关联。如果container是分布式的运行在多台虚拟机上,那么web application将在每一个JVM上有一个ServletContext的实例。
        在container中,没有作为web application的一部分被部署的servlet,是“默认”web application隐含的一部分,并且有一个默认的ServletContext。在分布式container中,默认的ServletContext并不是分布式的,而是只存在于一个JVM中。

 

 

SRV.3.3 Initialization Parameters

        下面的ServletContext接口的方法允许servlet访问存取与web application相关联的context初始化参数,这些参数由应用程序开发者在部署描述符中描述。

  • getInitParameter

  • getInitParameterNames

        初始化参数被开发者用来传达配置信息。典型的情况是站点管理员的的email地址,或者持有关键资源的系统的名称(the name of a system that holds critical data)。

 

 

SRV.3.4 Context Attributes

        Servlet可以通过名称将一个对象作为属性绑定到context。所有与context绑定的属性都对于同一个web application中其他任何的servlet都是有效的。以下是ServletContext接口中支持这种功能的方法:

  • setAttribute

  • getAtrribute

  • getAtrributeNames

  • removeAttribute

SRV.3.4.1 Context Attributes in a Distributed Container

        Context的attribute只在对于context所在的JVM中有效。这防止了ServletContext的attribute在分布式container中成为共享的内存数据。当有信息需要在运行在分布式环境下的不同servlet之间共享时,这些信息应该被放到session中(参见SRV.7 Sessions),存在数据库中,或者set到一个EJB组件中。

 

 

SRV.3.5 Resourcess

        ServletContext接口只对web application中静态内容文档的层次结构提供了直接的存取的功能。,包括html,gif和jpeg文件,通过ServletContext接口的以下方法:

  • getResource

  • getResourceAsStream

        getResource和getResourceAsStream方法以一个以“/”开头的字符串作为参数,这个参数代表了资源相对于context的路径。这个文档的曾其结构可能会出现在server的文件系统里,web application存档文件里,或者一个远程服务器,甚至一些其他的位置。

        这些方法不是用来获取动态内容的。例如,在支持JSP规范的container中,一个形式为getResource("/index.jsp")的方法调用会返回这个 jsp的源代码,而不是jsp执行后的输出结果。参见SRV.8 Dispatching Request,以获取关于存取动态内容的更多信息。

        Web application中所有资源的列表可以通过使用getResourcePath(String path)方法获得。此方法的语法细则可以在servlet的API中找到。

 

 

SRV.3.6 Multiple hosts and Servlet Contexts

        Web server可以支持在一台服务器上多逻辑主机共享一个 IP地址,这种能力有时被称为“虚拟主机”。在这种情况下,每个逻辑主机必须有它自己的servlet context或者servlet context 的集合。servlet context不能被多个虚拟主机共享。

 

 

SRV.3.7 Reloading Considerations

        虽然container提供者不是必须为了方便开发者而实现class reloading的方案,任何这样的实现都必须明确,所有它们可能使用的servlet和class(An exception is system classes that the servlet may use in a different class loader),都只装载在单个class loader中,这样才能保证应用程序呈现出开发者所期望的行为。为了方便开发者,container应该提供完整的session绑定listener的通知,以便用来监控在class reloading之前的session终止(session termination upon class reloading)。

        上一代的container创建新的class loader来装载servlet,不同于被用来装载servlet context中其他servlet或者class的class loader(distinct from class loaders used to load other servlets or classes used in the servlet context)。

 

SRV.3.7.1 Temporary Working Directories

        每个servlet context都需要一个临时存储目录。Servlet container必须为每个servlet context提供一个私有的临时目录,并且通过javax.servlet.context.tempdir这个context attribute来使其可用。与这个attribute相关联的对象必须使java.io.File类型。
        这一点被公认为是习惯做法,很多servlet引擎都提供了这样的实现。当container重启时,并不被要求去保持这个临时目录下的内容,但是必须保证临时目录中的一个servlet context的内容对与container中其他web application的servlet context使不可见的。

© 著作权归作者所有

共有 人打赏支持
悟空太多啦
粉丝 20
博文 84
码字总数 69236
作品 1
南京
项目经理
web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF ⋅ 04/27 ⋅ 0

web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数: 1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param> <param-name>context/param</param-name> <param-value>avalib......

村长大神 ⋅ 2014/10/27 ⋅ 0

Spring mvc 创建完项目测试的时候前台404,后台没有错误信息这是咋了

前天遇到一个问题,springmvc创建的项目测试的时候前台404,后台没有错误输出,奇了怪了...... 这是WEB-INF下的xml文件

好吧我输了 ⋅ 06/19 ⋅ 0

JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

干货!从Tomcat执行流程了解jsp是如何被解析的,错误提示是哪里生成的。

一.关于Tomcat组成 先上张图: Tomcat组成: 1.Server:代表整个 servlet 容器,如Tomcat,JBoss之类的。 2.Service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connect...

宇的季节 ⋅ 05/07 ⋅ 0

Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

Tomcat,JBoss与JBoss Web

最近接触到应用服务器JBoss,此外JBoss Web与Tomcat也同为web服务器,便查阅资料对三者进行比较,供大家参考。 一、Tomcat Tomcat 服务器是免费开源的Web 应用服务器。支持最新的Servlet 和J...

thinkyoung ⋅ 2014/11/16 ⋅ 0

tomcat学习笔记之servlet 容器

1、servlet 容器用来处理请求servlet资源、为客户端封装Response 对象的模块 2、tomcat 容器分四种: Engine:整个Catalina servlet 引擎 Host:包含一个或多个Context 容器的虚拟主机 Cont...

职业搬砖20年 ⋅ 06/08 ⋅ 0

Servlet创建运行的过程--生命周期以及自动加载

前言 初学者像我这样的,刚开始学的时候一脸懵逼,为什么Servlet可以直接运行,明明没有入口啊 只是重写了Servlet中的方法。然后访问该地址怎么就直接运行了。 所以了解Serlvet的运行过程即生...

codingcoge ⋅ 06/12 ⋅ 0

【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874 ⋅ 04/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 18分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 21分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 30分钟前 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 32分钟前 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 51分钟前 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部