ServletConfig vs ServletContext
ServletConfig
和ServletContext
接口有什么区别?
ServletConfig参数是为特定的servlet指定的,对于其他servlet是未知的。 它用于初始化目的。
ServletContext参数是为任何特定servlet之外的整个应用程序指定的,并且可用于该应用程序中的所有servlet。 它具有应用程序范围,因此可以跨页面全局访问。
来源: Java中的ServletConfig和ServletContext之间的区别
的ServletConfig
-
在
javax.servlet.*;
可用的ServletConfig
包 -
ServletConfig
对象是每个servlet类一个 -
ServletConfig
对象将在servlet的初始化过程中创build -
这个Config对象只对一个特定的servlet公共
-
范围:只要servlet正在执行,
ServletConfig
对象将可用,一旦servlet执行完成,它将被销毁。 -
我们应该明确地给出请求,以便第一次创build
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.*;
可用javax.servlet.*;
包 -
ServletContext
对象是整个Web应用程序的全局对象 -
ServletContext
对象将在Web应用程序部署时创build -
范围 :只要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类的数目=多less个ServletConfig
对象
ServletContext和ServletConfig在Servlet中的区别表格格式的JSP( Source )
ServletConfig由servlet容器实现,用init() 初始化一个servlet 。 也就是说,您可以使用web.xml部署描述符将初始化parameter passing给servlet。 为了理解,这与Java类中的构造函数类似。
ServletContext由servlet容器实现, 以便所有servlet与其servlet容器进行通信,例如,获取文件的MIMEtypes,获取调度请求或写入日志文件。 这是为了得到它的执行环境的细节。 它仅适用于单个Java虚拟机。 如果一个Web应用程序分布在多个JVM之间,这是行不通的。 为了理解,这就像一个应用程序全局variables机制,用于一个Web应用程序只部署在一个JVM中。
资料来源: http : //javapapers.com/servlet/difference-between-servletconfig-and-servletcontext/
这在javadoc的介绍性文字中得到了回答。
ServletConfig
javadoc:
一个servletconfiguration对象,由servlet容器在初始化期间将信息传递给servlet。
ServletContext
javadoc:
定义一组servlet用于与servlet容器通信的方法,例如,获取文件的MIMEtypes,调度请求或写入日志文件。
每个Java虚拟机每个“Web应用程序”有一个上下文。 (“Web应用程序”是服务器和内容的集合,安装在服务器URL名称空间的特定子集下,如/ catalog,可能通过.war文件安装)。
在部署描述符中标记为“分布式”的Web应用程序中,每个虚拟机将有一个上下文实例。 在这种情况下,上下文不能被用作共享全球信息的位置(因为这些信息将不是真正的全球性的)。 改为使用外部资源,如数据库。
ServletContext
对象包含在ServletConfig
对象中,Servlet在初始化时由Web服务器提供Servlet。
javadoc还包含一个可用的方法列表及其使用说明。 它很好地概述了什么是可用的/可能的。
ServletContext和ServletConfig服务器中的对象
作为Web服务器的一部分,许多Web应用程序将驻留在服务器端。对于evry Web应用程序服务器负责创build一个对象,即servlet上下文对象。 它也被称为应用程序对象。
ServletConfig对象
作为每个Web应用程序的一部分,我们将创buildN个servlet,对于每个sevlet,一个对象将由服务器创build,即ServletConfig对象。
Servlet容器将创build两个对象Servlet上下文和Servletconfiguration。 Servlet上下文是公开的,即我们使用webxml在Servlet上下文中存储的数据可用于所有servlet,而在应用程序中只有一个servlet上下文对象 ,而在servletconfiguration的情况下是私有的,即我们使用webxml在Servlet上下文中存储的数据仅适用于特定的servlet,并且可以有n个servletconfiguration对象
示例(如果我们在应用程序中有3个servlet文件,则会有3个servletconfiguration对象。
ServletConfig用于特定的Servlet,在init(ServletConfig x)方法中很有用,或者可以通过使用getServletConfig()方法来使用。 如果我们需要获得一些servlet特定的信息,就使用它。 例如:Servlet回顾关于数据库访问相关信息的信息可能使用ServletConfig,因为这个信息只对那个特定的Servlet
但是,ServletContext适用于整个应用程序。 当我们需要在特定的Web应用程序中的一些/所有servlet / jsp之间共享信息时使用它。 它可以通过使用Servlet的getServletConfig()。getServletContext()方法来访问。 例如:用于统计有多less用户访问您的网站的Servlet / JSP。
ServletConfig用于共享特定于Servlet的初始化参数,而ServletContext用于在Web应用程序内的任何Servlet内共享初始参数。
ServletContext
接口表示它所属Web应用程序的Servlets视图。 ServeltConfig
存在于ServeltConfig
。
每个Servlet都有ServletConfig
对象,用于使用getServeletConfig()
方法访问initParameters。
一般都是用于初始化的目的,但一个主要的不同是假设你想使用一些variables或字段为整个应用程序你需要初始化web.xml加载时间你有一个选项是ServletContext
如果你只想在特定的servlet中使用一些variables,那么你需要使用ServletConfit。