ServletConfig和ServletContext介绍

把ServletConfig和ServletContext放在一起介绍,是因为这两个是两个非常重要的配置类但是经常有人把他俩搞混,我们需要明确的是作用域和生存周期以及不同的作用。
一、区别

1、定义

1)ServletConfig:Servlet的配置对象,容器在初始化Servlet时通过它传递信息给Servlet。
2)ServletContext:上下文对象,提供了一系列方法供Servlet与Web容器交互。

2、创建时机

1)ServletConfig:在容器初始化Servlet的时候,并为其提供上下文初始化参数的名/值对的引用。
2)ServletContext:容器启动的时候,并为其提供Servlet初始化参数的名/值对的引用。

3、作用范围(可见性)

1)ServletConfig:每个JVM中每个Web应用一个ServletContext。
2)ServletContext:每个JVM中每个Web应用的每个Servlet一个ServletConfig。

所以ServletConfig=Servlet初始化参数,ServletContext=上下文初始化参数。

4、DD中的初始化参数配置

1)ServletConfig配置如下(注意是在<servlet>标签中):
<servlet>  
    <init-param>  
        <param-name>email</param-name>  
    <param-value>www.linwei.com</param-value>  
    </init-param>  
    <servlet-name>JarDownload</servlet-name>  
    <servlet-class>com.linwei.servlet.JarDownload</servlet-class>  
  </servlet>  
2)ServletContext配置如下(注意是直接在<web-app>标签下):
<context-param>  
    <param-name>email</param-name>  
    <param-value>www.linwei.com</param-value>  
</context-param>  

5、Servlet中的访问方法

    1)ServletConfig:getServletConfig().getInitParameter(“name”)。
    2)ServletContext:getServletContext().getInitParameter(“name”)。

二、个性

1、关于ServletConfig

1)容器初始化Servlet时,会从DD中读出Servlet的初始化参数并为每个Servlet创建一个唯一的ServletConfig对象(保存有初始化参数的引用),然后把ServletConfig对象当做参数传递给Servlet的init()。

 2)由上述1)推出:
    a)Servlet初始化前(比如构造函数中)不能使用Servlet的初始化参数(通过ServletConfig)。
    b)Servlet的初始化参数只会(也只能)读一次,就是在容器初始化Servlet的时候。

3)ServletConfig中保存有ServletContext的引用(所以可以通过ServletConfig获得ServletContext)。

4)一个“Servlet”要初始化完成之后,才成为真正的Servlet。(因为初始化时Servlet才能获得ServletConfig以及ServletContext的引用(ServletConfig中)),而不是构造函数完成后。也就是说,在“Servlet”获得ServletContext前,它还只是个普通的Java对象,而不是一个真正的Servlet。

 5)在Servlet中可以通过两种方式获取到ServletConfig:
    a)通过重载的init初始化方法参数中直接获取。
    b)直接调用getServletConfig ()方法(继承自GenericServlet)。

2、关于ServletContext

1)在Servlet中可以通过两种方式获取到ServletContext:
    a)通过ServletConfig。(调用getServletContext()方法)
    b)直接调用getServletContext ()方法(继承自GenericServlet)。
2)得到初始化参数和获取/设置属性
    a)getInitParameter(String)
    b)getInitParameterNames()
3)操作上下文属性
    a)getAttribute(String)
    b)getAttributeNames()
    c)setAttribute(String,Object)
    d)removeAttribute(String)
4)得到有关服务器(及容器)信息
    a)getMajorVersion()
    b)getServerInfo()
5)访问资源文件
    a)getResource(String parh)方法:其中path必须是/开头,代表当前web应用程序的根目录。返回一个代表某个资源的URL对象。
6)实现Servlet的转发
    a)context.getRequestDispatcher("/index.jsp").forword(request, response);  
7)记录服务器(如tomcat)日志文件。
    a)log(String msg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值