ServletContext
Web容器在启动时会加载每个Web应用程序,并为每个Web应用程序创建一个唯一的ServletContext实例对象,该对象一般称为Servlet上下文对象,作用域是整个web应用。
ServletContext对象包含在ServletConfig对象中,而ServletConfig对象是Web服务器在Servlet进行初始化时提供给servlet的。在Servlet中可以直接调用getServletContext()方法得到ServletContext对象的引用。ServletContext context = getServletContext();
注意:每个应用程序和特定内容安装在服务器的URL命名空间的一个特定子集下,并可能通过一个.war文件安装。若一个Web应用程序的部署描述符中标记其为“distributed(分布式)”的,则每个虚拟机中都会有一个context实例。这种情况下,该context不能用作共享全局信息,因为它的信息并不是真正全局的,可以使用外部资源取而代之,如数据库。
功能:
- 使用ServletContext对象存储数据
- 该对象也是一个作用域对象,它的作用域是整个应用程序。
- void setAttribute(String name, Object object)
- Object getAttribute(String name)
- 获取上下文初始化参数
- public String getInitParameter(String name) 应用程序初始化参数应该在**web.xml文件中使用<context-param>元素定义**
- 使用RequestDispatcher实现请求转发
- RequestDispatcher对象可用于将转发请求给资源或将资源包含在响应中。 资源可以是动态的或静态的。
- RequestDispatcher getRequestDispatcher(String path)参数path表示资源路径,**它必须以“/”开头,表示相对于Web应用的文档根目录**
- RequestDispatcher getNamedDispatcher(String name) 返回一个RequestDispatcher对象充当指定的Servlet的包装器;
- 通过ServletContext对象获得资源
- 登录日志和检索容器信息
之前内容的补充
Web应用程序是一种运行在应用程序服务器中并可以通过Web访问的应用程序,它是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。
Web应用程序具有严格定义的目录结构,不同的文件需存放在不同的目录中,其中每个Web应用程序在它的根目录中都必须有一个WEB-INF目录,其中存放部署描述文件web.xml和只供服务器访问的文件。如果一个JSP页面不允许客户直接访问,应该将它存放在WEB-INF目录
Servlet生命周期,包括5个阶段:类加载、实例化、初始化、为客户提供服务、销毁。
HTTP请求通常包括请求行、请求头、空行和请求的数据。
HTTP响应:状态行、响应头和响应的数据。