ServletContext

ServletContext

ServletContext上下文提供对应用程序中所有Servlet所共有的各种资源和功能的访问。Servlet上下文 API用于设置应用程序中所有Servlet共有的信息。Servlet可能需要共享他们之间的共有信息。运行于同 一服务器的Servlet有时会共享资源,如JSP页面、文件和其他Servlet

ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

  • request一个用户可有多个
  • session一个用户一个
  • servletContext所有用户共用一个 

request一个用户可有多个 session一个用户一个 servletContext所有用户共用一个 

ServletContext接口

容器供应商负责提供servlet容器内ServletContext接口的实现。使用ServletContext对象可以记录事件 日志、获取资源的URL地址,并且设置和保存上下文内可以访问的其他servlet的属性

在jsp中是9大默认对象的application对象 

初始化参数

上下文参数一般都是配置在web.xml中 

<context-param> 上下文参数的个数没有限制
<param-name>counter</param-name> 参数名称,不允许重复
<param-value>99999</param-value> 对应配置参数值
</context-param>

 ServletContext接口的初始化参数允许servlet访问与web应用相关的上下文初始化参数,这些由应用开 发人员在部署描述符中指定:

  • getInitParameter 
String str=this.getServletContext().getInitParameter("counter");//如
果上下文中没有这个初始化参数配置,则获取值null

 允许servlet的init-param和上下文参数同名,这里只是通过不同的方式进行获取, 上下文参 数使用application对象获取,servlet参数配置使用ServletConfig获取

  • getInitParameterNames 
final ServletContext application = this.getServletContext();
final Enumeration<String> names =
application.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=application.getInitParameter(name);
System.out.println(name+"---"+value);
}

 应用开发人员利用初始化参数传送配置信息。典型的例子是web管理员的e-mail地址或者一个持有关键 数据的系统名称

上下文属性

可以通过名称将对象属性绑定到上下文。任何绑定到上下文的属性可以被同一个web应用的其他servlet 使用。ServletContext接口的方法允许访问 

  • setAttribute
  • getAttribute
  • getAttributeNames
  • removeAttribute 

针对基本不发生改变而且需要频繁读取的数据,可以考虑将数据共享在application中 

  • 正确的做法是参数ServletContextListener实现application被创建时自动加载,在application销毁 时存储数据
  • 变通做法是由Servlet在init方法中负责加载准备 
<servlet>
<servlet-name>loadCatalog</servlet-name>
<servlet-class>com.yan.action.LoadCatalogServlet</servlet-class>
<!--默认情况下,当第一次客户端访问Servlet时,才由服务器负责加载并初始化Servlet
对象 -->
<!--配置参数load-on-startup表示应用启动时自动加载Servlet,值为大于等于零的整
数,值越大优先级越低.默认值-1表示按需加载-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>loadCatalog</servlet-name>
<url-pattern>/load.do</url-pattern>
</servlet-mapping>

 在LoadCatalogServlet的init方法中加载类目信息,并存放在application对象的属性中,其它地方直接获 取即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值