ServletContext对象
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
1)ServletContext对象应用1:多个web组件之间使用它实现数据共享
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
2)注意:用类装载器读取资源文件时,千万要注意,资源文件绝对不能太大,否则极易导致内存溢出
例子:
servlet:
package com.bjsxt.context.servlet;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* ServletContext(I)
* Servlet上下文,又名application,
* 对于一个web项目来说,只有全局唯一的一个ServletContext对象。
*
*用途:
*1.获取全局配置文件的参数
*2.获取web项目的绝对路径
*3.用于获取WebRoot文件夹下的文件(.JSP,.PNG,.html,.doc,)资源
* @author Administrator
*
*/
public class LearnServletContext extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取到servletContext对象1 (从当前Servlet对象获得)
ServletContext c1=this.getServletContext();
//获取到servletContext对象2 (从ServletConfig对象获得)
ServletContext c2=this.getServletConfig().getServletContext();
//获取到servletContext对象3 (从会话对象获取到,这是常用的方式)
ServletContext c3=req.getSession().getServletContext();
//判断对象是不是全局唯一
System.out.println(c1==c2);
System.out.println("对象标识:"+c1.hashCode()+"---"+c2.hashCode()+"---"+c3.hashCode());
//用途
//*1.获取全局配置文件的参数
System.out.println(c1.getInitParameter("schoolmaster"));
System.out.println(c1.getInitParameter("wife"));
//*2.获取web项目的绝对路径
System.out.println("web项目绝对路径:"+c2.getRealPath(""));
System.out.println("web项目绝对路径:"+c2.getRealPath("/"));
System.out.println("web项目绝对路径:"+c2.getRealPath("/upload"));
//*3.用于获取WebRoot文件夹下的文件(.JSP,.PNG,.html,.doc,)资源
//获取src下的文件资源
//LearnServletContext.class.getClassLoader().getResourceAsStream("DBUtils.properties");
//Thread.currentThread().getContextClassLoader().getResourceAsStream("DBUtils.properties");
//获取WebRoot文件夹下的文件资源
c1.getResourceAsStream("index.jsp");
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>web_project_1018_servletcontext</display-name>
<context-param>
<description>全局参数信息描述</description>
<param-name>schoolmaster</param-name>
<param-value>LiYi</param-value>
</context-param>
<context-param>
<description>全局参数信息描述</description>
<param-name>wife</param-name>
<param-value>liyi.girl</param-value>
</context-param>
<servlet>
<servlet-name>LearnServletContext</servlet-name>
<servlet-class>com.bjsxt.context.servlet.LearnServletContext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LearnServletContext</servlet-name>
<url-pattern>/context.action</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>