ServletConfig
和ServletContext
界面有什么区别?
答案 0 :(得分:49)
ServletConfig参数是为特定的servlet指定的,其他servlet也不知道。它用于初始化目的。
ServletContext参数是为任何特定servlet之外的整个应用程序指定的,并且可供该应用程序中的所有servlet使用。它是应用程序作用域,因此可以跨页面全局访问。
答案 1 :(得分:41)
来源:Difference between ServletConfig and ServletContext in Java
<强>的ServletConfig 强>
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的强>
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)
答案 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的介绍性文本中已经回答了这个问题。
servlet容器用于在初始化期间将信息传递给servlet的servlet配置对象。
定义servlet用于与其servlet容器通信的一组方法,例如,获取文件的MIME类型,分派请求或写入日志文件。
每个Java虚拟机每个“Web应用程序”有一个上下文。 (“Web应用程序”是安装在服务器URL命名空间的特定子集下的servlet和内容的集合,例如/ catalog,可能通过.war文件安装。)
如果Web应用程序在其部署描述符中标记为“distributed”,则每个虚拟机将有一个上下文实例。在这种情况下,上下文不能用作共享全局信息的位置(因为信息不是真正的全局信息)。改为使用像数据库这样的外部资源。
ServletContext
对象包含在ServletConfig
对象中,Web服务器在初始化servlet时提供servlet。
javadoc还包含可用方法列表及其使用说明。它很好地概述了它们的可用性/可能性。
答案 4 :(得分:3)
服务器中的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)
差异:
.--------------------------------------------------.----------------------------------------------------------------------------------------------.
| 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。