59

ServletConfigServletContext接口有什么区别?

4

11 回答 11

54

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

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

于 2010-11-19T09:35:44.353 回答
53

来源:Java 中 ServletConfig 和 ServletContext 的区别

ServletConfig

  • ServletConfig可在javax.servlet.*;包装中使用

  • ServletConfig对象是每个 servlet 类一个

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

  • 此 Config 对象仅对特定的 servlet 公开

  • 作用域:只要一个 servlet 正在执行,ServletConfig对象就可用,一旦 servlet 执行完成,它就会被销毁。

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

  • 在 web.xml -<init-param>标签将出现在<servlet-class>标签下

下面是它在 web.xml 下的样子:(来源

<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>

Servlet上下文

  • ServletContext可在javax.servlet.*;包装中使用

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

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

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

  • ServletContext对象甚至在发出第一个请求之前就可用 In 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对象的数量

表格格式的 Servlets JSP 中 ServletContext 和 ServletConfig 的区别(来源

在此处输入图像描述

于 2014-05-08T08:54:24.650 回答
20

ServletConfig由 servlet 容器实现,以使用 init()初始化单个 servlet 。也就是说,您可以使用 web.xml 部署描述符将初始化参数传递给 servlet。为了便于理解,这类似于 java 类中的构造函数。

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

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

于 2013-02-05T01:19:49.940 回答
4

这在他们的 javadocs 的介绍性文本中得到了回答。

ServletConfig文档:

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

ServletContext文档:

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

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

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

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

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

于 2010-11-19T12:53:13.333 回答
4

在此处输入图像描述

服务器中的 ServletContext 和 ServletConfig 对象

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

ServletConfig 对象

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

于 2012-02-16T06:52:36.607 回答
4

在此处输入图像描述

不同之处 :

.--------------------------------------------------.----------------------------------------------------------------------------------------------.
|                  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. |
'--------------------------------------------------'----------------------------------------------------------------------------------------------'
于 2018-07-18T10:34:55.830 回答
3

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

但是,ServletContext 是针对整个应用程序的。当我们需要在特定 Web 应用程序中的一些/所有 servlet/jsp 之间共享信息时使用它。可以使用 Servlet 的 getServletConfig().getServletContext() 方法来访问它。例如: Servlet/JSP 用于统计有多少用户访问了您的网站。

于 2013-08-10T14:05:56.663 回答
3

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

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

于 2016-02-05T05:48:10.997 回答
0

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

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

于 2014-01-01T12:53:25.860 回答
0

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

于 2016-03-30T11:29:10.563 回答
-1

ServletContextinterface 表示它所属的 Web 应用程序的 Servlets 视图。 ServletContext存在于ServeltConfig.

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

于 2012-10-11T11:31:49.663 回答