0
点赞
收藏
分享

微信扫一扫

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()

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应用的路径,以斜杆/开头

举报

相关推荐

0 条评论