`
hnicypb
  • 浏览: 65096 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ServletContext/ServletConfig 详解

    博客分类:
  • J2EE
阅读更多

对于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详解

    java web servletContext和ServletConfig详解

    servletcontext详解

    ### ServletContext详解 #### 一、概述 `ServletContext`接口是Servlet与Servlet容器之间进行通信的重要接口之一。当Servlet容器启动一个Web应用时,会为该应用创建一个`ServletContext`对象,这个对象在整个Web...

    JSP 从配置文件获取参数详解

    本文主要讲解如何通过ServletContext和ServletConfig接口从web.xml配置文件中获取这些参数。 首先,`javax.servlet.ServletContext`接口代表的是整个Web应用程序的上下文,它提供了一个全局的环境,可以存储和检索...

    java笔记jsp,servlet.docx

    【Java Servlet技术详解】 Java Servlet是一种Java编程语言的规范,用于扩展Web服务器的功能,它可以接收并响应来自HTTP客户端(通常是Web浏览器)的请求,并向HTTP客户端发送响应。Servlet技术是Java在Web开发中的...

    servlet生命周期详解

    同时,Servlet容器也会将`ServletConfig`对象与当前Web应用的`ServletContext`对象关联起来。`ServletConfig`对象能够提供关于Servlet配置的具体细节,比如Servlet的名字和其他初始化参数等。 3. **创建Servlet对象...

    北大青鸟jsp课件

    【Servlet详解】 Servlet是Java编程语言中用于动态创建web内容的一种技术,它是基于Java的服务器端应用程序,专门设计用来扩展服务器的功能。与普通的Java类相比,Servlet是在服务器上运行,而不是在客户端(如...

    ServletAPI详解

    ServletAPI详解 Servlet技术是JavaWeb开发中的基石,它提供了处理客户端请求并返回响应的核心机制。Servlet主要功能包括动态生成HTML文档、转发请求到其他Servlet、读取和写入Cookie,以及访问各种服务器资源,如...

    JSP 9 大内置对象详解

    - **application对象**:`javax.servlet.ServletContext`,代表整个Web应用程序的上下文。它用于共享全局信息,如配置信息,`application.getAttribute()`和`application.setAttribute()`用于在所有会话间共享数据...

    jsp详解

    7. **`config`**:类型为`javax.servlet.ServletConfig`,提供了获取JSP页面初始化参数的方法。 8. **`exception`**:类型为`java.lang.Throwable`,在JSP页面的错误处理部分使用,可以捕获和处理异常。 9. **`...

    JAVAweb开发14566PPT课件.ppt

    【JavaWeb开发】Servlet容器模型详解 在JavaWeb开发中,Servlet容器是处理HTTP请求和响应的核心组件。它管理Servlet的生命周期,为Servlet提供运行环境。本章主要讲解Servlet容器模型,包括ServletContext接口、...

    servlet+filter+listener 详解

    Servlet、Filter、Listener 详解 Servlet 是运行在服务器上的小程序,它可以使任何 Java 应用程序、浏览器或任何设备。Servlet 的客户端可以提出请求并获得该请求的响应。Servlet 在初始化后即驻留内存中,因此每次...

    Servlet_API_中文版

    ### Servlet API 中文版知识点详解 #### 一、Servlet接口:`javax.servlet.Servlet` Servlet 接口是 Java Servlet 规范的核心部分,定义了 Servlet 的生命周期方法和其他几个关键方法。Servlet 引擎(如 Tomcat 或...

    javax.servlet api参考(英文版)

    《javax.servlet API参考详解》 在Java Web开发中,`javax.servlet` API是核心部分,它为构建基于HTTP协议的Web应用程序提供了基础框架。本文将深入解析`javax.servlet` API,帮助开发者理解其核心概念、关键接口和...

    7_Application与Config对象

    ### 7_Application与Config对象详解 #### 一、Application对象 **Application对象**在Web开发中主要用于存储全局信息,即在整个应用程序范围内共享的数据。它属于`javax.servlet.ServletContext`类,意味着在一个...

    JSP内建对象详解

    ### JSP内建对象详解 在Java Server Pages (JSP) 技术中,为了方便开发者操作页面数据和实现各种功能,内置了一系列的对象,这些对象提供了丰富的API来处理客户端请求和响应,使得开发者无需手动创建就可以直接使用...

    Servlet中文API文档

    - **功能**:返回`ServletConfig`对象中引用的`ServletContext`对象。 - **返回值**:`ServletContext`对象。 - **`String getServletInfo()`**: - **功能**:返回描述Servlet的信息。 - **返回值**:一个空...

    Java详解Tomcat 的设计模式分析.doc

    例如,Request和Response对象的封装,Standard Wrapper到ServletConfig的映射,以及ApplicationContext到ServletContext的转化,都是门面模式的实例。这种模式允许客户端(如Web应用程序)与复杂的系统(如Tomcat)...

Global site tag (gtag.js) - Google Analytics