第3章 Servlet上下文
3.1 ServletContext接口简介
ServletContext接口定义了运行servlet的web应用的servlet视图。容器供应商负责提供servlet容器内ServletContext接口的实现。使用ServletContext对象,servlet可以记录事件日志,获取资源的URL地址,并且设置和保存上下文内可以访问的其他servlet的属性。
ServletContext以web的已知路径为根路径。比如,假定一个servlet上下文位于http://www.mycorp.com/catalog。以/catalog请求路径开头的所有请求,已知为上下文路径,被路由到和该ServletContext关联的web应用。
3.2 ServletContext接口作用域
容器中部署的每一个web应用都有一个ServletContext接口的实例对象与之关联。如果容器被分布在多个虚拟机上,一个web应用将在每一个VM中有一个ServletContext实例。
不作为web应用一部分部署的容器中的servlet默认是“默认”web应用的一部分,有一个默认的ServletContext。在分布式容器中。默认ServletContext是非分布式的,并且必须只存在于一个VM中。
3.3 初始化参数
ServletContext接口的初始化参数允许servlet访问与web应用相关的上下文初始化参数,这些由应用开发人员在部署描述符中指定:
• getInitParameter
• getInitParameterNames
应用开发人员利用初始化参数传送配置信息。典型的例子是web管理员的e-mail地址或者一个持有关键数据的系统名称。
3.4 上下文属性
servlet可以通过名称将对象属性绑定到上下文。任何绑定到上下文的属性可以被同一个web应用的其他servlet使用。ServletContext接口的下列方法允许访问这种功能:
• setAttribute
• getAttribute
• getAttributeNames
• removeAttribute
3.4.1 分布式容器中的上下文属性
上下文属性对于创建它们的VM来说是本地的。这防止ServletContext属性存储于分布式容器的共享内存中。当信息需要在运行于分布式环境中的servlet之间共享时,信息被放入会话中(参见第7章“会话”),存储于数据库中,或者存储于EJB组件中。
3.5 资源
ServletContext接口通过下列方法提供对web应用组成的静态内容文档层级的直接访问,包括HTML,GIF和JPEG文件:
• getResource
• getResourceAsStream
getResource和getResourceAsStream方法以“/”开头的字符串为参数,它指定上下文根路径的资源相对路径。文档的层级可能存在于服务器的文件系统,war文件,远程服务器或者在一些其它位置中。
这些方法不用来获取动态内容。比如,在一个支持JSP规范1的容器中,getResource("/index.jsp")这种形式的方法调用将返回JSP源代码,而不是处理后的输出。关于访问动态内容的更多信息参见第8章“转发请求”。
Web应用资源的完整列表可以使用getResourcePaths(String path)方法访问。该方法语义的完整信息可以在本规范的API文档中找到。
3.6 多个主机和ServletContext
Web服务器可能支持一个服务器上多个逻辑主机共享一个IP地址。这功能有时被称为“虚拟主机”。这种情况下,每一个逻辑主机必须有它自己的servlet上下文或者servlet上下文组。Servlet上下文不可以被多个虚拟主机共享。
3.7 重载考虑
尽管容器供应商因为对于易于开发而实现的类加载不做要求,但是任何那样的实现必须确保所有它们可能使用2的所有servlet和类,被加载在单个类加载器作用域内。必须保证应用应该如开发人员预想的那样运转。作为开发辅助,绑定监听器的会话通知的完整语义应当由容器支持,在类加载上会话终止的监听上使用。
上一代的容器创建新的类加载器以加载servlet,这和用来加载servlet上下文中使用的其他servlet或者类的类加载器不同。这可能造成servlet上下文内的对象引用指向一个意想不到的类或对象,造成意想不到的行为。需要阻止由新一代类加载器所引发的问题。
3.7.1 临时工作目录
每一个servlet上下文都需要一个临时存储目录。Servlet容器必须为每一个servlet上下文提供一个私有的临时目录,并且使它可以通过javax.servlet.context.tempdir上下文属性可用。这些属性关联的对象必须是java.io.File类型。
这项需求认可了很多servlet引擎实现中提供的常见便利。容器不需要在servlet重启时维持临时目录的内容,但是需要确保一个servlet上下文的临时目录的内容对于该servlet容器上运行的其他web应用的servlet上下文不可见。
1. JSP规范(http://java.sun.com/products/jsp)
2. 异常是servlet可以在不同的类加载器中使用的系统类。
分享到:
相关推荐
3. **JSP内置对象**:JSP提供了九个内置对象,如request(HTTP请求)、response(HTTP响应)、session(会话)、application(应用上下文)、out(输出流)等,这些对象简化了Web开发过程。 4. **JSP标签**:除了...
##### 2.3 上下文层次结构 - **WebApplicationContext**:DispatcherServlet 需要一个 `WebApplicationContext`,这是 `ApplicationContext` 的扩展,用于其自身的配置。`WebApplicationContext` 与 `...
3.8.2 页面上下文的page Context对象 3.8.3 获取web.xml配置信息的config对象 3.8.4 获取异常信息的exception对象 3.9 实战检验 3.9.1 将网页保存为Word文档 3.9.2 学生管理系统中用户登录模块 3.10 疑难解惑 3.10.1...
如果需要手动部署,也可以编辑`conf/context.xml`来指定应用程序的上下文路径。 安全是任何服务器都需要考虑的重要因素。Tomcat提供了多种安全机制,如Basic Auth、Form-based Auth、SSL/TLS加密等。你可以通过修改...
最初,它只能运行在支持JSP 1.2和Servlet 2.3规范的容器之上,比如Tomcat 4.x。不过,在后续发布的JSP 2.0规范中,JSTL已被视为标准的一部分。 #### JSTL的核心组成部分 JSTL主要由两大部分组成: 1. **标签库**...
Listeners则可以监听服务器事件,如应用上下文的加载和卸载。 标签"apache"表明Tomcat与Apache软件基金会的关系,而"9.0"代表这是Tomcat的第9个主要版本。标签中的"tomcat"和"9.0"也突出了讨论的核心——Tomcat 9.0...
- 修改`conf/server.xml`配置文件,设置端口号、上下文路径、连接器等参数。 2. **启动与管理**: - 使用`bin/startup.sh`(Linux/Mac)或`bin/startup.bat`(Windows)启动Tomcat服务。 - 通过访问`...
2. **conf** 目录:存储配置文件,如`server.xml`(定义服务器配置)、`web.xml`(全局Web应用配置)和`context.xml`(用于特定应用的上下文配置)。 3. **lib** 目录:包含Tomcat运行所需的JAR库,以及支持 ...
2.1.1 系统上下文模型设计 这部分描述了系统与外部环境的关系,包括用户、数据源和外部系统间的交互。 2.1.2 系统体系结构设计 2.1.2.1 分布式体系架构 采用分布式架构以提高系统的扩展性和可靠性。 2.1.2.2 软件...
- **2.5 上下文会话**:介绍了上下文会话的概念,这对于实现更高效的事务管理非常重要。 #### 五、配置详解 ##### 3.1 程序化配置 这部分详细说明了如何通过编程方式配置 Hibernate。 - **3.2 获取 ...
8. **ActionContext**:ActionContext封装了当前请求的上下文信息,包括参数、session、request、response等,提供了一种在Action与视图之间共享数据的途径。 9. ** strut2的注解**:Struts2支持注解方式的配置,...
- **2.5 上下文相关的 Session**:讲解如何管理 Session 的生命周期。 #### 四、Hibernate 配置 - **3.1 可编程的配置方式**:使用 Java 代码来配置 Hibernate。 - **3.2 获得 SessionFactory**:创建和管理 `...