对于web容器来说,ServletContext接口定义了一个servlet环境对象,这个对象定义了一个在servlet引擎上的servlet的视图。通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类。
servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据,他提供了4个读取和设置共享数据的方法。具体见api帮助文档。
另外,ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。
一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源:
1.初始化参数
2.存储在背景中的对象
3.与背景关联的资源
4.日志
最后针对ServletContext我自己的总结是:
ServletContext即servlet容器,其内提供的方法可以在同一web应用下的所有servlet中被使用
而对于config对象来说,他与context相比,就有了很大的局限性。
当ServletConfig对象在servlet中被实例化后,对任何客户端在任何时候访问有效。但是一个servlet的ServletConfig对象不能被另一个servlet访问,也就是说,在本servlet声明后的ServletConfig只能在本servlet内被访问,属于内部持久有效的变量。
下有一例,可供深刻理解:
一般来说,对整个应用的配置,为了不使用“硬编码”,应该配置为ServletContext参数,比如字
符集设定。
<web-app>
.................
<init-param>
<param-name>charset</param-name>
<param-value>GB2312</param-value>
</init-param>
.................
</web-app>
注意以上格式只是2。0以后的标准格式,旧容器(引擎)采用服务商自己的格式配置。注意它的
父元素应该是<web-app>也就是说它是对一个应用作用的。
而如果只有一个特定的servlet要设定的参数,其它servlet不能共享,应该配置为ServletConfig
参数,如一个读取附件的servlet要用到绝对目录,而别的servlet不会用到:
<servlet>
<servlet-name>GetAtt</servlet-name>
<servlet-class>mail.GetAttServlet</servlet-class>
<init-param>
<param-name>absPath</param-name>
<param-value>/usr/mail/ax/axman/Maildir/</param-value>
</init-param>
</servlet>
不用说,因为在<servlet>标签中已经指定了name和class,也就是说只有mail.GetAttServlet这个\r
servlet中才能取到path,而别的Servlet是不能取到的。
前面我们讲了对这连个属性的认识,下面让我们来共同学习一下,如何获取这两个对象的参数:
访问ServletConfig参数:
首先要取得ServletConfig对象,然后调用它的getInitParameter();方法。要访问
ServletConfig对象,jsp中直接使用config内置对象,但因为你的JSP编译后的servlet一般不会被
加到web.xml中的,所以一般不会通过jsp来取对本JSP编译后的servlet的配置参数,那么在servlet
中要得到ServletConfig对象有两种方法:
在inii()方法中取到:通过init的重载方法传递
.....
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
..................
}
然后在下面的方法中就可以访问config对象。但要注意,为了确保能从构造方法中到当前servlet的
config对象,应该调用父类的构造方法:
.....
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
..................
}
通过getServletConfig()方法直接到时,这样做的好处是不必调手工传递属性,想在任何时候都可
以得到。
还有第三种方法,要自己实现一些接口,这里作为一般讨论就不介绍了。
要访问ServletContext对象,只要从现有的ServletConfig对象getServletContext()就可以了,然后\r调用它的getInitParameter()方法就可以获取它的参数。
按说:ServletContext对象的作用域比ServletConfig作用域大,为什么要从ServletConfig中到得
ServletContext对象呢?我个人认为:容器保存了很多个ServletContext对象,请求时容器到底取哪一个\r给你呢?那就取其中包含ServletConfig信息的那个给你,就是说取ServletConfig对象的父级对象。就好象HttpSession要从requset中取得一样,就是取那个包含当前request对象的session对象给你,这只是我的个人想法,还没有来得及看具体实现。反正就这么用吧。
<script type="text/javascript"><!----></script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript" mce_src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<script></script>
分享到:
相关推荐
java web servletContext和ServletConfig详解
### ServletContext详解 #### 一、概述 `ServletContext`接口是Servlet与Servlet容器之间进行通信的重要接口之一。当Servlet容器启动一个Web应用时,会为该应用创建一个`ServletContext`对象,这个对象在整个Web...
本文主要讲解如何通过ServletContext和ServletConfig接口从web.xml配置文件中获取这些参数。 首先,`javax.servlet.ServletContext`接口代表的是整个Web应用程序的上下文,它提供了一个全局的环境,可以存储和检索...
【Java Servlet技术详解】 Java Servlet是一种Java编程语言的规范,用于扩展Web服务器的功能,它可以接收并响应来自HTTP客户端(通常是Web浏览器)的请求,并向HTTP客户端发送响应。Servlet技术是Java在Web开发中的...
同时,Servlet容器也会将`ServletConfig`对象与当前Web应用的`ServletContext`对象关联起来。`ServletConfig`对象能够提供关于Servlet配置的具体细节,比如Servlet的名字和其他初始化参数等。 3. **创建Servlet对象...
【Servlet详解】 Servlet是Java编程语言中用于动态创建web内容的一种技术,它是基于Java的服务器端应用程序,专门设计用来扩展服务器的功能。与普通的Java类相比,Servlet是在服务器上运行,而不是在客户端(如...
ServletAPI详解 Servlet技术是JavaWeb开发中的基石,它提供了处理客户端请求并返回响应的核心机制。Servlet主要功能包括动态生成HTML文档、转发请求到其他Servlet、读取和写入Cookie,以及访问各种服务器资源,如...
- **application对象**:`javax.servlet.ServletContext`,代表整个Web应用程序的上下文。它用于共享全局信息,如配置信息,`application.getAttribute()`和`application.setAttribute()`用于在所有会话间共享数据...
7. **`config`**:类型为`javax.servlet.ServletConfig`,提供了获取JSP页面初始化参数的方法。 8. **`exception`**:类型为`java.lang.Throwable`,在JSP页面的错误处理部分使用,可以捕获和处理异常。 9. **`...
【JavaWeb开发】Servlet容器模型详解 在JavaWeb开发中,Servlet容器是处理HTTP请求和响应的核心组件。它管理Servlet的生命周期,为Servlet提供运行环境。本章主要讲解Servlet容器模型,包括ServletContext接口、...
Servlet、Filter、Listener 详解 Servlet 是运行在服务器上的小程序,它可以使任何 Java 应用程序、浏览器或任何设备。Servlet 的客户端可以提出请求并获得该请求的响应。Servlet 在初始化后即驻留内存中,因此每次...
### Servlet API 中文版知识点详解 #### 一、Servlet接口:`javax.servlet.Servlet` Servlet 接口是 Java Servlet 规范的核心部分,定义了 Servlet 的生命周期方法和其他几个关键方法。Servlet 引擎(如 Tomcat 或...
《javax.servlet API参考详解》 在Java Web开发中,`javax.servlet` API是核心部分,它为构建基于HTTP协议的Web应用程序提供了基础框架。本文将深入解析`javax.servlet` API,帮助开发者理解其核心概念、关键接口和...
### 7_Application与Config对象详解 #### 一、Application对象 **Application对象**在Web开发中主要用于存储全局信息,即在整个应用程序范围内共享的数据。它属于`javax.servlet.ServletContext`类,意味着在一个...
### JSP内建对象详解 在Java Server Pages (JSP) 技术中,为了方便开发者操作页面数据和实现各种功能,内置了一系列的对象,这些对象提供了丰富的API来处理客户端请求和响应,使得开发者无需手动创建就可以直接使用...
- **功能**:返回`ServletConfig`对象中引用的`ServletContext`对象。 - **返回值**:`ServletContext`对象。 - **`String getServletInfo()`**: - **功能**:返回描述Servlet的信息。 - **返回值**:一个空...
例如,Request和Response对象的封装,Standard Wrapper到ServletConfig的映射,以及ApplicationContext到ServletContext的转化,都是门面模式的实例。这种模式允许客户端(如Web应用程序)与复杂的系统(如Tomcat)...