Java Servlet 规范 第4章 Servlet Context

来源:互联网 发布:淘宝退货没填快递单号 编辑:程序博客网 时间:2024/06/04 00:42

Servlet Context

4.1 ServletContext 接口介绍

ServletContext 接口定义了一个servlet视角的Web应用。容器提供者负责在容器中实现一个ServletContext接口。通过ServletContext类,一个servlet可以记录事件,获取资源的URL引用,设置和存储属性,这些属性可以被容器中别的servlets使用。

一个ServletContext在一个Web服务器中植根与一个已知的路径。例如,一个servlet context可以位于http://www.mycorp.com/catalog。所有以/catalog (上下文路径(context path))开始的到Web应用的请求,都跟ServletContext相关联。

4.2 ServletContext 接口的范围

容器中的每一个Web应用都有一个ServletContext接口的实现。就算容器被分布到许多虚拟机中,在一个Web应用中,每个虚拟机中都有一个ServeltContext。

容器中的servelts,如果不是被部署为Web应用的一部分,就默认是Web应用的一部分,有一个默认的ServletContext。在一个分布式的容器中,默认的ServletContext不是分布式的,并且只能存在与一个JVM中。

4.3 初始化参数

下面的ServletContext接口的方法,允许应用开发者在Web应用中通过servlet设置上下文初始化参数:

  • getInitParameter
  • getInitParameterNames

    应用开发者通过初始化参数设置信息。典型的例子是网站主人的邮箱地址或系统中重要数据的名字。

    4.4 配置方法

    下面的方法在Servlet 3.0后加入ServletContext来定义servlets,过滤器和url模式。这些方法只能在系统初始化时通过下面两个方法调用:ServletContextListener接口的contextInitialized方法或者ServletContainerInitializer实现类的onStartup方法。除了添加Servlets和Filters,你也可以查找一个Servlet或者Filter的注册类。如果一个ServletContextListener没有在web.xml或web-fragment.xml中声明,也没有通过@WebListener标注,这时ServeltContext传递给了这个ServletContextListener的contextInitialized方法,那么ServletContext中定义的方法(通过程序配置servlets,filters和listeners)一定会抛出UnsupportedOperationException异常。

    4.4.1 通过程序添加和配置Servlets

    对框架开发者来说,通过程序添加一个servlet到上下文中是有用的。例如一个框架可以通过这个方法声明一个控制器。

原创粉丝点击