Servlet 中 ServletConfig 和 ServletContext 的区别
ServletConfig和ServletContext都是在servlet初始化时创建的对象,用来给servlet提供一些初始参数或者配置信息。但是,不同之处在于 ServletConfig 共享的信息是针对特定 servlet 的,而 ServletContext 共享的信息对 Web 应用程序中的所有 servlet 都可用。
ServletConfig:
- ServletConfig 是一个对象,包含一些初始参数或配置信息,由 Servlet Container 创建并在初始化时传递给 servlet。
- ServletConfig 用于特定的 servlet,这意味着应将特定于 servlet 的信息存储在 web.xml 中并使用此对象检索它们。
- 例子:假设,一个人正在建立一个工作门户,并希望与招聘人员和求职者共享不同的电子邮件 ID(可能会随着时间的推移而改变)。需要编写两个 servlet,一个用于处理招聘人员的请求,另一个用于处理求职者。在哪里存储电子邮件 ID?将 email-id 作为不同 servlet 的名称-值对放在 web.xml 中,可以在 servlet 中使用
getServletConfig().getInitParameter("name")
进一步检索。
ServletContext:
- ServletContext 是 Servlet Container 创建的对象,用于将初始参数或配置信息共享给整个应用程序。
- 例子: 一个工作门户的名称是
geek-docs.com
。在不同 servlet 提供的网页顶部显示网站名称,需要将网站名称存储在每个 servlet 中,从而导致冗余。由于每个 Servlet 都可以访问 ServletContext 共享的信息,因此最好使用 ServletContext 并在需要时使用getServletContext.getInitParameter("name")
检索网站名称。
ServletConfig 和 ServletContext 示例的实现如下所示:
web.xml
servelet示例代码
servelet应用示例代码
下面是 ServletConfig 和 ServletContext 两者的对比区别表:
ServletConfig | ServletContext |
---|---|
ServletConfig 是特定于 Servlet | ServletContext 适用于整个应用程序 |
servletConfig 的参数在 <servlet> 内的 <init-param> 中以名称-值对的形式出现。 |
servletContext 的参数在 <servlet> 和 <web-app> 内部的 <context-param> 中作为名称-值对存在 |
ServletConfig 对象通过 getServletConfig() 方法获得。 |
ServletContext 对象是通过 getServletContext() 方法获得的。 |
每个 servlet 都有自己的 ServletConfig 对象。 | ServletContext 对象只是一个对象,由应用程序的不同 servlet 使用。 |
当只有一个 servlet 需要它共享的信息时,使用 ServletConfig。 | 当整个应用程序需要共享信息时使用 ServletContext |