ServletConfig、ServletContext概述、配置及ServletContext的三个作用

目录

一、ServletConfig概述

二、ServletConfig配置

三、ServletContext概述

四、ServletContext配置

五、ServletContext的三个作用


一、ServletConfig概述

● ServletConfig是一个接口
● 当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig config)方法将ServletConfig对象传递给Servlet,ServletConfig的生命周期与Servlet一样
● ServletConfig封装的配置信息是键值对的形式

常用方法

方法 说明
String getInitParameter(String
name)
根据参数名返回对应的参数值
Enumeration
getInitParameterNames()
返回一个Enumeration对象,其中包含了所有的参数名
ServletContext getServletContext() 返回代表当前web应用的ServletContext对象
String getServletName() 返回Servlet的名称

二、ServletConfig配置

● 配置ServletConfig也是在web.xml文件中的 <servlet></servlet> 标签下进行的,需要使用

<init-param></init-param> 标签将参数名和参数值包住,表示一个键值对,其中使用 <param-name></para-name> 表示参数名, <param-value></param-value> 表示参数值

● 一个 <init-param></init-param> 只能表示一个键值对

范例:

<servlet-class>com.liaoxiangqian.ServletConfigDemo</servlet-class>
    <!--配置encoding参数,使用一个init-param标签-->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <!--配置desc参数,使用一个init-param标签-->
    <init-param>
        <param-name>desc</param-name>
        <param-value>this is ServletConfigDemo</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>ServletConfigDemo</servlet-name>
    <url-pattern>/ServletConfigDemo</url-pattern>
</servlet-mapping>

三、ServletContext概述

● Servlet容器启动时会为每个Web应用创建一个唯一的ServletContext对象代表当前Web应用,ServletContext对象封装了当前Web应用的所有信息
● ServletContext可以配置和获得应用的全局初始化参数,可以实现多个Servlet之间的数据共享
● 生命周期:应用加载则创建,应用停止则销毁

四、ServletContext配置

● 在web.xml文件的 <web-app> 标签中,通过 <context-param> 标签来配置,其中他有两个子标签
● 子标签 <param-name> 表示全局初始化参数的key
● 子标签 <param-value> 表示全局初始化参数的value

范例:

<context-param>
    <param-name>globalEncoding</param-name>
    <param-value>UTF-8</param-value>
</context-param>
<context-param>
    <param-name>globaleDesc</param-name>
    <param-value>This is SevletContext</param-value>
</context-param>

五、ServletContext的三个作用

获取Web应用程序的初始化参数:

1、Enumeration getInitParameterName() 方法用于返回包含所有参数名的Enumeration对象

2、String getInitParameter(String name) 方法用于根据参数名获取参数值

实现多个Servlet之间的数据共享:

方法名 说明
Enumeration
getAttributeNames()
返回包含所有域属性名的Enumeration对象
Object getAttribute(String
name)
根据域属性名返回域属性值
void removeAttribute(String
name)
根据域属性名从ServletContext中删除对应的域属性
void setAttribute(String
name,Object obj)
设置ServletContext的域属性,其中name是域属性名,obj是域属性值

注意:域属性指的是可以共享的数据,即可以被多个Servlet访问到

读取Web应用下的资源文件:

实际开发中有时会需要读取Web应用中的一些资源文件,为此ServletContext接口定义了一些
读取Web资源的方法,这些方法由依靠Servlet容器实现,可以根据资源文件相对Web应用的
路径,返回关联资源文件的IO流、资源文件的绝对路径等

相关方法:

方法名 说明
Set getResourcePaths(String
path)
返回一个Set集合,集合包含path指定路径下的子目录名称文件名称但是不包含子目录下的文件名称,path以斜杠/开头表示Web应用的根目录
String getRealPath(String
path)
返回资源文件在服务器文件系统上的真实路径,参数path表示资源文件相对Web应用的路径,以斜杠/开头表示Web应用的根目录,如果不能将虚拟路径转为真实路径则返回null
URL getResource(String
path)
返回映射到某个资源文件的URL对象,参数必须以斜杠/开头表示Web应用的根目录
InputStream
getResourceAsStream(String
path)
返回映射到某个资源文件的InputStream输入流对象,参数path的传递规则与getResource()一致

总结:这四个方法中的path其实就是相对于Web应用的路径,以斜杆/开头

猜你喜欢

转载自blog.csdn.net/m0_61961937/article/details/126990525