ServletConfig和ServletContext的区别

什么是ServletConfig?

Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象。在servletConfig对象中包含了servlet的初始化参数信息。此外,servletConfig对象还与servletContext对象关联。Servlet容器在调用servlet对象的init(ServletConfig  config)方法时,会把servletConfig对象当做参数传递给servlet对象。Init(ServletConfig  config)方法会使得当前servlet对象与servletConfig对象建立关联关系.一般不会使用这种方法的。而是调用this.Getservletconfig servletConfig接口中定义了一下方法。                  

Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象。在servletConfig对象中包含了servlet的初始化参数信息。

serevletconfig是跟整个servlet有关的,跟客户端是否存在无关。下面就是各个重要的对象的关系,也就是说,建立了servletconfig之后,你的client关闭了,但是只要服务器开着,其他的客户端也是可以访问这个servletconfig的。 Httpservelrtrequest 和 httpserveltresponse Httpsession Servletconfig Servletcontext 


1) 每一个Servlet中都有一个ServletConfig
2) api

this.getServletConfig()-ServletConfig //获取ServletConfig对象
getInitParameter(String param)-String  //获取数据

3)在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。
当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。 



什么是ServletContext ?

ServletContext是整个web项目应用程序运行后的代表对象。可以通过ServletConfig的getServletContext() 的方法得到,然后可以用该对象取得整个应用程序的相关资源或者信息。

扫描二维码关注公众号,回复: 863918 查看本文章

1)WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。 ServletContext对象被包含在ServletConfig对象中
2)由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
3)api
this.getServletContext()-ServletContext  //获取ServletContext对象
setAttribute(String,String);    //存数据
getAttribute(String)-String     //获取数据
getInitParameter(String param)-String  //获取数据




区别:

ServletConfig用于封装servlet的配置信息。仅对具体的某一个Servlet有效并且可访问,通过在web.xml中配置该Servlet的启动信息。

配置方法:

<servlet>

<servlet-name>Servlet1</servlet-name>

<servlet-class>com.test.servlet.Servlet2</servlet-class>

<init-param>

<param-name>charset</param-name>

<param-value>UTF-8</param-value>

</init-param>

</servlet>

则该配置只针对Servlet2,使用ServletConfig对象读取

ServletConfig config = this.getServletConfig();

String value = config.getInitParameter("charset");

ServletContext用于多种用途,是全局对象,任何Servlet都可以访问。

其用途分为:

a.多个web组件之间使用它实现数据共享,因为它是全局对象

getAttribute()/setAttribute() 获取域信息/绑定域信息

b.获取到整个web应用的配置信息

配置信息在web.xml中

<context-param>

<param-name>username</param-name>

<param-value>Jack</param-value>

</context-param>

此时可以调用String username=this.getServletContext.getInitParamter("username");

c.实现转发(不过一般转发使用request对象去做)

d.读取资源文件(这里有路径方面的问题:/表示当前web应用)。




猜你喜欢

转载自blog.csdn.net/qq_33366098/article/details/80273061