`
xtel
  • 浏览: 22260 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ServletContext与ServletConfig的详解及区别

 
阅读更多

ServletContext与ServletConfig的详解及区别

一、ServletContext详解
ServletContext是servlet与servlet容器之间的直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个servletContext对象。每个web应用有唯一的servletContext对象。同一个web应用的所有servlet对象共享一个serveltContext,servlet对象可以通过它来访问容器中的各种资源。
servletContext接口提供的方法分为以下几种类型:
用于在Web应用范围内存取共享数据的方法。
注:web应用范围具有以下两层含义:
(1) 表示有web应用的生命周期构成的时间段.
(2) 表示在web应用的生命周期内所有web组件的集合。
 setAttribute(String name,java.lang.Object object):把一个java对象和一个属性名绑定,并存放到ServletContext中,参数name指定属性名,参数Object表示共享数据。
 getAttribute(String name):根据参数给定的属性名,返回一个Object类型的对象。
 getAttributeNames():返回一个Enumeration对象,该对象包含了所有存放在ServletContext中的属性名。
 removeAttribute(String name):根据参数指定的属性名,从servletContext对象中删除匹配的属性。
访问当前Web应用的资源
 getContextpath():返回当前web应用的URL入口。
 getInitParameter(String name):返回web应用方位内的匹配的初始化参数值。在web.xml中<web-app>元素中<context-param>元素表示应用范围内的初始化参数。
 getInitParameterNames():返回一个Enumeration对象。
 getServletContextName():返回web应用的名字。即<web-app>元素中<display-name>元素的值。
 getRequestDispatcher(String path):返回一个用于向其他web组件转发请求的RequestDispatcher对象。
访问servlet容器的相关信息
 getContext(String uripath):根据参数指定的url,返回当前servlet容器中其他web应用的servletContext()对象。
反问web容器的相关信息
 getMajorVersion():返回servlet容器支持的java servlet API 的主板本号。
 getMinorVersion():返回servlet容器支持的java Servlet API的此版本号。
 getServerInfo():返回servlet容器的名字和版本。
访问服务器端的文件系统资源
 getRealPath(String path):根据参数指定的虚拟路径,返回文件系统中的一个真实的路径。
 getResource(String path):返回一个映射到参数指定的路径的url。
 getResourceAsStream(String path):返回一个用于读取参数指定的文件的输入流。(把文件读到输入流中去)
 getMimeType(String file):返回参数指定的文件的MIME类型。
输出日志
 log(String msg):想servlet的日志文件中写日志。
 log(String message, java.lang.Throwable   throwable):向servlet的日志文件中写错误日志,以及异常的堆栈信息。
ServletContext对象获得几种方式:
       Javax.servlet.http.HttpSession.getServletContext() 
       Javax.servlet.jsp.PageContext.getServletContext() 
       Javax.servlet.ServletConfig.getServletContext()

二、ServletConfig详解
Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象。在servletConfig对象中包含了servlet的初始化参数信息。此外,servletConfig对象还与servletContext对象关联。Servlet容器在调用servlet对象的init(ServletConfig config)方法时,会把servletConfig对象当做参数传递给servlet对象。Init(ServletConfig config)方法会使得当前servlet对象与servletConfig对象建立关联关系。
servletConfig接口中定义了一下方法:
 getInitParameter(String   name):根据给定的初始化参数,返回匹配的初始化参数值。
 getInitParameterNmes():返回一个Enumeration对象,里面包含了所有的初始化参数。
 getServletContext():返回一个servletContext()对象,
 getServltName():返回servlet的名字,即web.xml中的<servlet-name>的子元素的值。如果没有配置这个子元素,则返回servlet类的名字。
例子:
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>0</load-on-startup>

<init-param>
   <param-name>color</param-name>
   <param-value>red</param-value>
</init-param>
<init-param>
   <param-name>size</param-name>
   <param-value>16</param-value>
</init-param>

</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
如上,红色标记处为初始化参数,相当于公有参数。
在servlet中:

public class UserDateBaseServlet extends HttpServlet{
String color = this.getInitParameter("color");
String size = this.getInitParameter("size");
System.out.println("颜色是:"+color+"字号是:"+size);
}
注:HttpServlt类继承了GenericServlet类,而GenericServlet类实现了ServletConfig接口,因此在HttpServlet类和GenericServlet类及子类中都可以直接调用ServletConfig接口中的方法。

三、二者区别
在看web.xml配置文件关于环境初始化参数的配置时,发现了ServletConfig与ServletContext这两个对象的应用,于是就写了一个Servlet来体验了一下。

首先从作用范围来说,ServletConfig作用于某个特定的Servlet,即从该Servlet实例化,那么就开始有效,但是该Servlet之外的其他Servlet不能访问;ServletContext作用于某个web应用,即在一个web应用中相当于一个全局对象,在Servlet容器启动时就已经加载,对于不同的web应用,有不同的ServletContext。

其次,来看一下二者参数的使用。如果一个参数为整个web应用所用,那么就配置为ServletContext参数,如下所示:

<context-param>
   <param-name>encoding</param-name>
   <param-value>gb2312</param-value>
</context-param>

如果一个参数仅为一个Servlet所用,那么就应该配置为ServletConfig参数,如下所示:

<servlet>
   <servlet-name>affice_add</servlet-name>
   <servlet-class>servlet.Affice_add</servlet-class>
   <init-param>
      <param-name>filepath</param-name>
     <param-value>/webContent/affice</param-value>
   </init-param>
</servlet>

最后,说明一下参数的获取。访问ServletConfig参数,取得ServletConfig对象后,调用getInitParameter()方法;访问ServletContext对象,只要调用现有的ServletConfig对象的getServletContext()即可,然后同样调用getInitParamter()方法就能获取参数。例如对于上面的参数,可以通过如下方法获取各自参数。

public class TestServletConfig extends HttpServlet {
   ServletConfig config;

   public void init(ServletConfig config) {
       this.config=config;
   }

   public void doGet(HttpServletRequest request,HttpServletResponse response)
          throws ServletException,IOException {
       String filepath=(String)config.getInitParameter("filepath");
       System.out.println(filepath);
       String encode=(String)config.getServletContext().getInitParameter("encoding");
       System.out.println(encode);
   }

   public void destroy() {
   }
}
对上面Servlet编译后,在浏览器中输入http://localhost:8080/my/TestServletConfig(该链接地址与servlet在webx.xml中的配置有关)后,就可以分别对应输出/WebContent/affice和gb2312

 

转自:http://hi.baidu.com/huaxuelili/item/1704a03dbb5cd7f22784f4c6

分享到:
评论

相关推荐

    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应用程序的上下文,它提供了一个全局的环境,可以存储和检索...

    servlet生命周期详解

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

    java笔记jsp,servlet.docx

    4)ServletConfig与ServletContext `ServletConfig`接口提供Servlet的初始化信息,例如Servlet的名称、上下文路径等。当`init()`方法被调用时,会传入一个实现了`ServletConfig`的实例,通常是由Servlet容器(如...

    ServletAPI详解

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

    JSP 9 大内置对象详解

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

    jsp详解

    JSP的核心特性是将内容的生成与展示分离,提高了Web应用的开发效率和可维护性。 在JSP中,有九个内置对象,它们是JSP引擎在编译JSP页面时自动创建并注入到每个请求处理过程中的。这些内置对象极大地简化了开发者的...

    JAVAweb开发14566PPT课件.ppt

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

    servlet+filter+listener 详解

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

    北大青鸟jsp课件

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

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

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

    JSP内建对象详解

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

    javax.servlet API中文说明.docx

    ### javax.servlet API中文说明知识点详解 #### 一、概述 `javax.servlet` 包是 Java Web 开发的核心组件之一,提供了构建动态 Web 应用所需的基本接口和类。该包中的核心类和接口定义了 Servlet 的行为规范以及...

    详解Spring Boot 配置加载顺序及属性加载顺序

    Spring Boot 配置加载顺序及属性加载顺序详解 Spring Boot 是一个流行的 Java 框架,用于快速构建基于 Spring 的应用程序。在 Spring Boot 中,配置加载顺序及属性加载顺序是一个非常重要的概念。我们可以通过多种...

    Servlet中文API文档

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

Global site tag (gtag.js) - Google Analytics