ServletContext对象
一个项目只有一个ServletContext对象!
我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据!
与天地同寿!!!这个对象在Tomcat启动时就创建,在Tomcat关闭时才会死去!
a.ServletContext概述
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
服务器会为每个应用创建一个ServletContext对象:
ServletContext对象的创建是在服务器启动时完成的;
ServletContext对象的销毁是在服务器关闭时完成的。
ServletContext对象的作用是在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。
b.获取ServletContext
ServletConfig#getServletContext();
GenericServlet#getServletContext();
HttpSession#getServletContext()
ServletContextEvent#getServletContext()
在Servlet中获取ServletContext对象:
在void init(ServletConfig config)中:ServletContext context = config.getServletContext();,ServletConfig类的getServletContext()方法可以用来获取ServletContext对象;
在GenericeServlet或HttpServlet中获取ServletContext对象:
GenericServlet类有getServletContext()方法,所以可以直接使用this.getServletContext()来获取;
public class MyServlet implements Servlet {
public void init(ServletConfig config) {
ServletContext context = config.getServletContext();
}
…
}
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
ServletContext context = this.getServletContext();
}
}
c.域对象的功能
ServletContext是JavaWeb四大域对象之一:
PageContext;
ServletRequest;
HttpSession;
ServletContext;
所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据,下面是ServletContext对象用来操作数据的方法:
void setAttribute(String name, Object value):用来存储一个对象,也可以称之为存储一个域属性,例如:servletContext.setAttribute(“xxx”, “XXX”),在ServletContext中保存了一个域属性,域属性名称为xxx,域属性的值为XXX。请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同;
Object getAttribute(String name):用来获取ServletContext中的数据,当前在获取之前需要先去存储才行,例如:String value = (String)servletContext.getAttribute(“xxx”);,获取名为xxx的域属性;
void removeAttribute(String name):用来移除ServletContext中的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做;
Enumeration getAttributeNames():获取所有域属性的名称;
d.获取应用初始化参数
Servlet也可以获取初始化参数,但它是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备!
可以配置公共的初始化参数,为所有Servlet而用!这需要使用ServletContext才能使用!
还可以使用ServletContext来获取在web.xml文件中配置的应用初始化参数!注意,应用初始化参数与Servlet初始化参数不同:
--配置了两个应用初始化参数
<context-param>
<param-name>paramName1</param-name>
<param-value>paramValue1</param-value>
</context-param>
<context-param>
<param-name>paramName2</param-name>
<param-value>paramValue2</param-value>
</context-param>
--获取ServletContext对象,通过参数名,获取参数值。
ServletContext context = this.getServletContext();
String value1 = context.getInitParameter("paramName1");
String value2 = context.getInitParameter("paramName2");
System.out.println(value1 + ", " + value2);
--获取所有应用初始化参数名称
Enumeration names = context.getInitParameterNames();
while(names.hasMoreElements()) {
System.out.println(names.nextElement());
}
e.获取真实路径(*****)
还可以使用ServletContext对象来获取Web应用下的资源,例如在hello应用的根目录下创建a.txt文件,现在想在Servlet中获取这个资源,就可以使用ServletContext来获取。
获取a.txt的真实路径:String realPath = servletContext.getRealPath(“/a.txt”),realPath的值为a.txt文件的绝对路径:F:\tomcat6\webapps\hello\a.txt;
获取b.txt的真实路径:String realPath = servletContext.getRealPath(“/WEB-INF/b.txt”);
f.获取资源流
不只可以获取资源的路径,还可以通过ServletContext获取资源流,即把资源以输入流的方式获取:
获取a.txt资源流:InputStream in = servletContext.getResourceAsStream(“/a.txt”);
获取b.txt资源流:InputStream in = servletContext.getResourceAsStream(“/WEB-INF/b.txt”);
g.获取指定目录下所有资源路径
还可以使用ServletContext获取指定目录下所有资源路径,例如获取/WEB-INF下所有资源的路径:
Set set = context.getResourcePaths("/WEB-INF");
System.out.println(set);
注意,本方法必须以“/”开头!
http://blog.csdn.net/qiqiongran_luck/article/details/6889037
分享到:
相关推荐
Application对象(ServletContext对象).pptx
超全面javaweb教程28天第9天_14_获取ServletContext对象
介绍 ServletContext对象的一些重要方法的示例代码
"Java ServletContext 对象用法解析" Java ServletContext 对象是 Java Web 应用程序中一个非常重要的对象,它代表了整个 Web 应用的环境和上下文信息。下面是对 Java ServletContext 对象用法解析的详细介绍。 ...
"Java ServletContext 对象原理及功能解析" Java ServletContext 对象是 Java Web 应用程序中一个非常重要的对象,它提供了一些功能来帮助开发者更方便地开发 Web 应用程序。下面我们将对 Java ServletContext 对象...
`ServletContext`对象是Servlet容器(如Tomcat、Jetty等)为每个Web应用程序创建的一个全局对象,它在整个Web应用的生命周期内都存在,为所有Servlet提供了一个共享数据和资源的平台。在本例中,我们探讨的是如何...
在 Servlet 编程中,ServletConfig 和 ServletContext 两个对象经常被混淆,然而它们有着截然不同的作用域和用途。 首先, lets 看看 ServletConfig 对象。ServletConfig 对象是 Servlet 的配置对象,用于存储 ...
博客地址:...存放数据指的是这三个对象在工程中setAttribute(),removeAttribute()的时候,我们的监听器就会知道,然后在对应的方法中执行相应的操作。
在这篇总结中,我们将讨论 ServletConfig 对象和 ServletContext 对象两个常用的 Servlet 对象。 ServletConfig 对象 ServletConfig 对象是 Servlet 生命周期中的一部分,它提供了关于 Servlet 的一些基本信息。...
3. ServletContext对象: ServletContext是整个Web应用程序的共享上下文,它代表了应用的全局范围。开发者可以通过`context.getAttribute()`和`context.setAttribute()`来获取和设置全局变量,这些变量对所有用户都...
JavaWeb新版教程Servlet-1vlet-ServletContext对象的介绍.avi
JavaWeb新版教程Servlet-1vlet-ServletContext对象作用的演示.avi
1.获取ServletContext对象 2.创建Thymeleaf解析器对象 3.给解析器对象设置参数(前缀、后缀、缓存过期时间、是否缓存、编码方式) 4.创建模板引擎对象 5.给模板引擎对象设置模板解析器 包含processTemplate...
相比之下,ServletContext对象是整个Web应用的共享上下文,它在整个Web应用的生命周期内存在,对于所有Servlet和JSP页面都是可用的。ServletContext允许在不同的Servlet之间共享数据,也可以用来获取全局的初始化...
在Web应用中,每个Web应用都有一个唯一的ServletContext对象,所有Servlet都能访问这个对象。 ### 配置Quartz in ServletContext 1. **添加依赖** 在Maven或Gradle项目中,需要引入Quartz的依赖库,例如在Maven的...
当Web应用被部署后,Servlet容器会为每个Servlet类创建一个或多个实例,同时为整个Web应用创建一个ServletContext对象。这个对象在整个Web应用的生命周期中都是唯一的,所有Servlet实例都可以通过`getServletContext...
ServletContext对象提供了许多有用的方法和属性,例如,getInitParameter()方法可以获取Web应用程序的初始化参数,getServletContextName()方法可以获取ServletContext对象的名称,getAttribute()方法可以获取...
// 获取ServletContext对象 ServletContext context = getServletContext(); // 设置初始化参数 context.setAttribute("siteName", "My Website"); // 获取初始化参数 String siteName = (String) context....
此外,由于 Spring 是注入的对象放在 ServletContext 中的,所以可以直接在 ServletContext 中取出 WebApplicationContext 对象: `WebApplicationContext webApplicationContext = (WebApplicationContext) ...
5. **application对象**:ServletContext对象在整个Web应用的生命周期内共享数据,适用于所有用户和会话。例如,`application.getAttribute("globalKey")`和`application.setAttribute("globalKey", globalValue)`。...