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

转载于:https://www.cnblogs.com/flance/p/3776131.html

Servlet 2.4 规范之第四篇:Servlet上下文相关推荐

  1. 【Java成王之路】EE初阶第二十四篇: Servlet

    Sevlet Servlet 是什么 Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一 个 web app. Tomcat 是一个 ...

  2. 深入理解Tomcat和Jetty源码之第二篇servlet规范和servlet容器

    深入理解Tomcat和Jetty源码之第二篇servlet规范和servlet容器 思维导图总览 这篇推送主要讲servlet的规范和什么是servlet容器? 1.先来讲讲servlet规范: 2. ...

  3. java servlet 3.1,Servlet 3.1规范学习小记

    对于Servlet 2.5加入的新功能: 1. 处理Listener的次序性 2.5及之前的规范没有定义Listener的调用次序.web.xml中定义的Listner的执行顺序是不保证的(按:尽管规 ...

  4. 跟我学,你的服务器够安全吗?第四篇----tomcat安全篇

    目录 前言 1.限制服务器平台信息泄漏(高危) 2.禁止显示异常调试信息(高危) 3.AJP协议文件读取与包含严重漏洞(高危) 4.开启日志记录(高危) 5.禁止Tomcat显示目录文件列表(高危) ...

  5. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)

    转:https://blog.csdn.net/forezp/article/details/69934399 最新版本: 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix) ...

  6. SpringCloud教程 | 第四篇:断路器(Hystrix)

    SpringCloud教程 | 第四篇:断路器(Hystrix) 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTempl ...

  7. 第四篇:整合Thymeleaf模板

    第四篇:整合Thymeleaf模板 本文链接:http://blog.battcn.com/2018/04/28/springboot/v2-web-thymeleaf/ 在前面几章中已经介绍了如何创 ...

  8. SpringCloud核心教程 | 第四篇:服务注册与发现 Consul篇

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...

  9. 美术网络计算机培训总结,【推荐】网络培训心得体会四篇

    [推荐]网络培训心得体会四篇 心中有不少心得体会时,不妨将其写成一篇心得体会,让自己铭记于心,如此就可以提升我们写作能力了.怎样写好心得体会呢?以下是小编为大家收集的网络培训心得体会4篇,希望对大家有 ...

  10. 九州计算机入职培训总结,【精华】银行培训心得体会四篇

    [精华]银行培训心得体会四篇 我们心里有一些收获后,写一篇心得体会,记录下来,如此可以一直更新迭代自己的想法.那么心得体会怎么写才恰当呢?以下是小编帮大家整理的银行培训心得体会4篇,欢迎大家分享. 银 ...

最新文章

  1. python版本不同影响大不大_Python的不同版本对编程有影响吗
  2. 用模版实现简单的内存池
  3. python 阿里云短信接口_python 之阿里云短信服务接入流程短信接口
  4. iPhone 无线投影到 Mac
  5. 数学建模之倾倒的啤酒杯
  6. 电工电子产品环境试验GB国标汇总
  7. 高等数学(第七版)同济大学 习题1-7 个人解答
  8. 怎样快速将图片dpi修改为300?如何调整照片分辨率?
  9. c语言孪生素数问题_c语言 孪生素数
  10. ARM920T的MMU与Cache ——转载
  11. 通过DMA方式进行连续发送
  12. MEION:QA-MSK调制问题
  13. 上海市青少年算法2021年9月月赛(丙组)
  14. java利用数组求平均值_Java程序使用数组计算平均值
  15. 黑镜狗再现!波士顿动力「大黄狗」上岗SpaceX,勘察火箭爆炸现场
  16. 一群不想鸡娃的直男程序员,决定对一支笔下手了
  17. 完美融入云原生的无代码平台 iVX编辑器实战
  18. WeRateDog---分析推特数据
  19. web前端三大主流框架是什么?
  20. Java项目中引入MySQL依赖

热门文章

  1. 【Java基本功】一文读懂final关键字的用法 1
  2. [20180819]四校联考
  3. Android 视频展示控件之 SurfaceView、GLSurfaceView、SurfaceTexture、TextureView 对比总结...
  4. HTTP权威协议笔记-6.代理
  5. 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁
  6. 海康威视研究院ImageNet2016竞赛经验分享
  7. C# 简单连接数据库并执行SQL查询语句
  8. 狡兔死,良弓藏-每个王朝都一样
  9. django orm 以列表作为筛选条件进行查询
  10. RESTful源码笔记之RESTful Framework的基本组件