ServletConfig与ServletContext

时间:2010-11-19 09:19:51

标签: servlets servletconfig

ServletConfigServletContext界面有什么区别?

11 个答案:

答案 0 :(得分:49)

ServletConfig参数是为特定的servlet指定的,其他servlet也不知道。它用于初始化目的。

ServletContext参数是为任何特定servlet之外的整个应用程序指定的,并且可供该应用程序中的所有servlet使用。它是应用程序作用域,因此可以跨页面全局访问。

答案 1 :(得分:41)

来源:Difference between ServletConfig and ServletContext in Java

<强>的ServletConfig

    {li>

    ServletConfig javax.servlet.*;包中提供

  • ServletConfig对象是每个servlet类一个

  • 将在servlet的初始化过程中创建ServletConfig的对象

  • 此Config对象仅对特定的servlet是公共的

  • 范围:只要servlet正在执行,ServletConfig对象将可用,一旦servlet执行完毕,它将被销毁。

  • 我们应该明确提出请求,以便第一次创建ServletConfig对象

  • 在web.xml中,<init-param>标记将显示在<servlet-class>标记

以下是它在web.xml下的外观:(Source

<servlet>
    <servlet-name>ServletConfigTest</servlet-name>
    <servlet-class>com.stackoverflow.ServletConfigTest</servlet-class>
    <init-param>
        <param-name>topic</param-name>
        <param-value>Difference between ServletConfig and ServletContext</param-value>
    </init-param>
</servlet>

<强> ServletContext的

    {li>

    ServletContext javax.servlet.*;包中提供

  • ServletContext对象是整个Web应用程序的全局

  • 将在部署Web应用程序时创建ServletContext的对象

  • 范围:只要Web应用程序正在执行,ServletContext对象就可用,并且一旦从服务器中删除应用程序,它就会被销毁。

  • ServletContext对象即使在发出第一个请求之前也可用 在web.xml - <context-param>标记将显示在<web-app>标记

以下是web.xml中的外观:

<context-param>
    <param-name>globalVariable</param-name>
    <param-value>com.stackoverflow</param-value>
</context-param>

所以最后......。

没有。 web应用程序=许多ServletContext个对象[每个Web应用程序1个]
   servlet类的数量=许多ServletConfig个对象

Servlet JSP中的ServletContext和ServletConfig之间的区别,以表格格式(Source

enter image description here

答案 2 :(得分:18)

  

ServletConfig 由servlet容器实现,使用init()初始化单个servlet 。也就是说,你可以通过   使用web.xml部署初始化servlet的参数   描述。为了理解,这类似于一个构造函数   java class。

     

ServletContext 由servlet容器为所有servlet 实现,以便与其servlet容器进行通信,例如,   获取文件的MIME类型,获取调度请求或写入   一个日志文件。这是为了获得有关其执行环境的详细信息。它   仅适用于单个Java虚拟机。如果是网络   应用程序分布在多个JVM之间,这是行不通的。   为了理解,这就像一个应用程序全局变量   仅在一个JVM中部署的单个Web应用程序的机制。

来源:http://javapapers.com/servlet/difference-between-servletconfig-and-servletcontext/

答案 3 :(得分:4)

在他们的javadocs的介绍性文本中已经回答了这个问题。

ServletConfig javadoc:

  

servlet容器用于在初始化期间将信息传递给servlet的servlet配置对象。

ServletContext javadoc:

  

定义servlet用于与其servlet容器通信的一组方法,例如,获取文件的MIME类型,分派请求或写入日志文件。

     

每个Java虚拟机每个“Web应用程序”有一个上下文。 (“Web应用程序”是安装在服务器URL命名空间的特定子集下的servlet和内容的集合,例如/ catalog,可能通过.war文件安装。)

     

如果Web应用程序在其部署描述符中标记为“distributed”,则每个虚拟机将有一个上下文实例。在这种情况下,上下文不能用作共享全局信息的位置(因为信息不是真正的全局信息)。改为使用像数据库这样的外部资源。

     

ServletContext对象包含在ServletConfig对象中,Web服务器在初始化servlet时提供servlet。

javadoc还包含可用方法列表及其使用说明。它很好地概述了它们的可用性/可能性。

答案 4 :(得分:3)

enter image description here

服务器中的ServletContext和ServletConfig对象

作为Web服务器的一部分,有许多Web应用程序驻留在服务器内部。对于每个Web应用程序,服务器负责创建一个对象,即servlet上下文对象。它也被称为应用程序对象。

ServletConfig对象

作为每个Web应用程序的一部分,我们将创建N个servlet。对于每个servlet,服务器将创建一个对象,即ServletConfig对象。

答案 5 :(得分:3)

Servlet容器将创建两个对象Servlet上下文和Servlet配置。 Servlet Context是 public ,即我们使用webxml在Servlet上下文中存储的数据对所有servlet都可用,并且在应用程序中只有一个servlet上下文对象,而在servlet的情况下配置是私有即我们使用webxml存储在Servlet上下文中的数据仅适用于特定的servlet,并且可以有 n个servlet配置对象

示例(如果我们在应用程序中有3个servlet文件,那么将有3个servlet配置对象。

答案 6 :(得分:2)

ServletConfig用于特定的Servlet,在init(ServletConfig x)方法中很有用,或者可以通过使用getServletConfig()方法使用。如果我们需要获取一些servlet特定信息,则使用它。 例如:Servlet重新获取有关数据库访问相关信息的信息可能使用ServletConfig,因为仅对该特定servlet需要此信息

但是,ServletContext适用于整个应用程序。当我们需要在特定Web应用程序中的某些/所有servlet / jsp之间共享信息时使用它。它可以通过使用Servlet的getServletConfig()。getServletContext()方法来访问。例如:用于计算访问过您网站的用户数量的Servlet / JSP。

答案 7 :(得分:2)

enter image description here

差异:

.--------------------------------------------------.----------------------------------------------------------------------------------------------.
|                  ServletConfig                   |                                        ServletContext                                        |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| Unique object per servlet                        | Unique object for complete application                                                       |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| Used to provide init parameters to the servlet   | Used to provide application level init parameters that all other servlets can use.           |
:--------------------------------------------------+----------------------------------------------------------------------------------------------:
| We can’t set attributes in ServletConfig object. | We can set attributes in ServletContext that other servlets can use in their implementation. |
'--------------------------------------------------'----------------------------------------------------------------------------------------------'

答案 8 :(得分:0)

一般两者都用于初始化目的但一个主要的不同是 假设您想要为整个应用程序使用一些 变量或字段 ,您需要初始化web.xml加载时间,您有一个选项是 ServletContext < / p>

如果你只想在特定的servlet中使用一些变量,那么你需要使用ServletConfit。

答案 9 :(得分:0)

ServletConfig用于共享特定于servlet的init参数,而ServletContext用于在Web应用程序中的任何Servlet中共享init参数。

答案 10 :(得分:-1)

ServletContext接口表示它所属的Web应用程序的Servlets视图。 ServletContext中存在ServeltConfig

每个Servlet都有ServletConfig个对象,用于使用getServeletConfig()方法访问initParameters。