ServletContext域对象

ServletContext简介

ServletContext叫做servlet上下文对象,上下文在初中就接触到了,上下文的意思,顾名思义,承上启下,在全局都起到一个中心的作用,在服务器每个项目创建的时候都会初始化一个ServletContext上下文对象,我们也叫ServletContext叫做域对象,是在一个区域内所有的servlet都可以共享这个域对象中的资源,因此多用于资源共享。

ServletContext的生命周期

ServletContext在项目创建的时候都会有一个ServletContext上下文对象,一直存在于项目中,在项目被移除,或者服务器被正常关闭的时候会被销毁。

ServletContext的获取方法

ServletContext的获取方式有两种:
第一种:通过servletConfig来获取ServletContext 调用的api为getServletConfig().getServletContext();
第二种:通过在GenericServlet中直接封装好的getServletContext()方法
两种方式在获取的方式上面是一致的。

ServletContext的作用

1,获取全局的初始化参数

我们在一个项目中的web.xml文件中设置的全局的初始化参数可以在任意的servlet来调用API来访问。

<context-param>
  	<param-name>db</param-name>
  	<param-value>orcale</param-value>
  </context-param>

通过调用 getInitParameter(String name) 来获取全局的初始化参数
如果有多组参数,可以调用Enumeration getInitParameterNames()来获取多组数据,然后利用迭代器来遍历。

2,获取全局资源

全局资源都可以在每个servlet中获取。

3,资源共享

资源共享就是ServletContext最重要的功能了。
我们在这里验证一下资源共享的使用流程,创建三个servlet 一个设置ServletContext的属性,一个来获取ServletContext的属性,另一个来移除ServletContext中设置的属性。

//setServlet中来设置ServletContext中的属性
ServletContext sc = getServletContext();
sc.setAttribute("username", "djm");
sc.setAttribute("password", "123");

设置完之后在getServlet中获取ServletContext中的属性

ServletContext sc = getServletContext();
String nameVal = (String)sc.getAttribute("username");
String passVal = (String) sc.getAttribute("password");
System.out.println("name"+nameVal+" password"+passVal);

在第三个servlet中移除设置的属性值
如果移除之后在获取设置的ServletContext中的属性就会为null了

ServletContext sc = getServletContext();
sc.removeAttribute("password");

ServletContext常用的API

InputStream getResourceAsStream(String filepath)

应用场景:当我们在提供下载的时候,在服务器上存在的资源,可以通过输入流的方式来将服务器的文件来读取到输入流中。然后可以通过response将输入流中的数据通过输出流来写到前台页面。

String getMimeType(String 文件名)

应用场景:可以获取到一个文件的mime类型是什么类型。
mime类型: text/css text/js text/html …大类型/小类型。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值