<!-- web.xml文件中配置上下文参数,这些信息被自动封装到ServletContext对象中 -->
<context-param>
<param-name>user</param-name>
<param-value>admin</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123</param-value>
</context-param>
1.index.html界面如下:
<html>
<head>
<title>测试servletContext接口</title>
</head>
<body>
<a href="/prj_servlet_04/a">AServlet</a>
<br><br>
<a href="/prj_servlet_04/b">BServlet</a>
</body>
</html>
2.web.xml文件配置如下:
<servlet>
<servlet-name>a</servlet-name>
<servlet-class>com.qq10091080.AServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>a</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
3.创建一个AServlet.java的类
public class AServlet implements Servlet {
private ServletConfig config;
public void init(ServletConfig config) throws ServletException {
this.config=config;
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
//获取servletConfig
ServletConfig config=getServletConfig();
//获取servletContext
ServletContext application=config.getServletContext();
System.out.println("a----->>>"+application);
Enumeration<String> names=application.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
//通过上下文初始化参数的name获取value
String value=application.getInitParameter(name);
System.out.println("----->>>"+name+value);
}
//获取文件的绝对路径
String realPath=application.getRealPath("index.html");
System.out.println(realPath);
public void destroy() {
}
public String getServletInfo() {
return null;
}
public ServletConfig getServletConfig() {
return config;
}
研究javax.servlet.servletContext接口
1.javax.servlet.ServletContext接口。servlet规范
2.Tomcat服务器对ServletContext接口的的实现类的完整路径:org.apache.catalina.core.ApplicationContextFacade
javaweb程序员只需要面向ServletContext接口调用即可,不需要关心Tomcat具体实现。
3.ServletContext是什么?什么时候被销毁?什么时候创建》创建几个?
-ServletContext别翻译为Servlet上下文【Context一般都为上下文】。
- 一个webapp只有一个ServletContext对象
- 一个webapp只有一个web.xml文件,web.xml文件服务器启动阶段被解析
- ServletContext在服务器启动阶段被实例化
- ServletContext在服务器关闭的时候被销毁
-ServletContext对应的是web.xml文件,是web.xml文件的代表
- ServletContext是所有Servlet对象四周环境的代表【在同一个webapp中,所有的Servlet对象共享一个四周环境对象,该对象就是ServletContext】
- 所有的用户若想共享同一个数据,可以将这个数据放到ServletContext对象中。
- 一般放到ServletContext对象中的数据是不建议涉及到修改操作的。因为ServletContext是多线程共享的一个对象,修改的时候会存在线程安全问题。
4.ServletContext接口有哪些常的方法:
方法很多,只介绍重点方法:
- object getAttribute(String name) : 向ServletContext范围中添加数据
- void setAttribute(String name,Object object): 从ServletContext范围中获取数据
- void removeAttribute(String name) :移除ServletContext范围中的数据
- String getInieParameter(String name)
- Enumeration getInitParameterName()
- String getRealPath(String path)
5.ServletContext.servlet.servletConfig之间的关系:
- 一个Servlet对应一个ServletConfig,100个Servlet对应100个ServletConfig。
- 所有的Servlet共享一个ServletContext对象