`

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对象当做参数传递给Servletinit()。

   

     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)

  

 三、典型应用(待补充。。。)

分享到:
评论

相关推荐

    ServletConfig与ServletContext.docx

    注意:每个servlet有一个ServletConfig,...如果修改XML来改变一个初始化参数的值,只有当Web应用重新部署时Web应用其他部分才会看到,因为servlet只会初始化一次,在初始化时会为它提供ServletConfig和ServletContext。

    Servlet知识点和示例

    (1)WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web 应用。 (2)ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过 this....

    java_web_第3章_servlet2.ppt

    3.1 Web应用的结构和部署 3.2 部署描述文件 3.3 ServletConfig接口 3.4 ServletContext接口 3.5 Servlet的多线程问题 3.6 一个综合实例

    超级有影响力霸气的Java面试题大全文档

    并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成...

    深入体验Java Web开发内幕

    4.1 Servlet的有关概念与前置知识  4.2 Servlet开发入门  4.3 Servlet的特点及运行过程  4.4 ServletConfig接口  4.5 GenericServlet与HttpServlet类  4.6 ServletContext接口  4.7 思考与...

    java-servlet-api.doc

    所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。 JavaServletAPI的组成 JavaServletAPI由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在...

    java 面试题 总结

    并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成...

    ADVANCE_JAVA

    实用05:为ServletContext和ServletConfig对象编写Servlet程序。 实用06:编写一个Login servlet。 从html文件login.html中获取输入的用户名和密码,并对用户进行身份验证。 实用07:编写Servlet设置用户输入的...

    jsp内置对象的用法

    config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象) 序号 方 法 说 明 ...

    Java服务器程序设计

    2.2.2 servlet与applet的区别[/font] 2.2.3 servlet的应用[/font] 2.3 servlet与cgi的比较[/font] 2.3.1 cgi[/font] 2.3.2 servlet的优点[/font] 2.4 运行servlet[/font] 2.5 小结[/font] [/font] 第2部分 java...

Global site tag (gtag.js) - Google Analytics