ServletContext是什么

2025-11-01 22:17:42

1、A:ServletContext是一个规范

B:ServletContext是一个接口

C:什么是ServletContext?

它是servlet的上下文环境(就是servlet的生存环境)

D:ServletContext在整个应用中只有一个

它是所有的servlet的上下文环境

E:既然ServletContext是整个应用的环境

那么它的生命周期就和服务器启动时创建,

在服务器关闭时回收

所以它的生命周期是整个应用中最大的(排除对象持久化)

F:ServletContext中保存的数据会被所有的servlet共享

G:ServletContext的实现类

org.apache.catalina.core.ApplicationContextFacade

H:ServletContext在使用时通常都叫做application

application就是代表整个应用

J:因为ServletContext被放入的数据会被所有的servlet共享

通常这种可以放数据,也可以取数据的对象,一般叫做域对象

常见的在web编程中的域对象:

ServletContext application

   放入的数据可以跨越用户  跨越多个servlet被共享

HttpSession  session

   放入的数据就是用户的状态数据,可以被多个HttpServletRequest共享   跨越了多个request

HttpServletRequest  request

  放入的数据在这次请求中可以使用

  

K:ServletContext常用的方法

getInitParameter(String name)  获取某个初始化参数的值

getInitParameterNames()  获取所有的初始化参数的名称

getRealPath(String path) 获取某个资源在web应用中的绝对路径

getRequestDispatcher(String path) 获取请求转发对象  

setAttribute(String name, Object object)   往ServletContext中放数据,并起一个名称便于管理

getAttribute(String name)    通过名称从ServletContext获取数据

removeAttribute(String name)  从ServletContext中直接移除数据

在使用ServletContext来放入和获取数据时,就类似使用一个map

L:通过ServletContext获取初始化参数

getInitParameter(String name)  获取某个初始化参数的值

getInitParameterNames()  获取所有的初始化参数的名称

它的初始化参数和使用ServletConfig获取的某个servlet的初始化参数有区别:

ServletConfig获取的只是专门给某个servlet添加的初始化参数,这个参数别的servlet不能使用

而使用ServletContext添加的初始化参数,实际上是给整个应用添加的初始化参数,所有的servlet都可以使用这个初始化参数

给整个应用添加初始化参数的方法:

在web.xml中添加如下配置信息

   <context-param>

  <param-name>aaa</param-name>

  <param-value>111</param-value>

   </context-param>

配置的变量aaa是一个全局初始化参数,它可以被所有的servlet共享

使用getInitParameter(String name)获取某个参数

使用getInitParameterNames() 一次获取多个参数

M:getRealPath(String path)  获取应用中某个资源的真实路径

获取的是某个应用下资源的真实物理路径

获取路径后往往就可以获取这个资源的信息

所以通常这种资源都是配置文件

注意:这个方法如果查找的资源不存在,并不是报错误,而是还是拼接好路径返回

所以在使用getRealPath这个方法时,请一定保证所查找的资源真实存在

N:域对象的相关方法

setAttribute(String name, Object object)   往ServletContext中放数据,并起一个名称便于管理

getAttribute(String name)    通过名称从ServletContext获取数据

removeAttribute(String name)  从ServletContext中直接移除数据

eg:

在HelloServlet中向ServletContext中放入对象user

在HelloServlet02中从ServletContext中获取user对象

要注意的是域方法中  放入的对象会丢失类型,最终都是Object 需要类型转换

O:在实际编程中ServletContext的使用时机

定义整个应用的全局初始化参数

把ServletContext当做域对象使用

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢