JavaWeb四大域对象之ServletContext

特性:

一个项目只有一个ServletContext对象 服务器启动时创建一个ServletContext对象,服务器关闭时销毁对象

作用

ServletContext对象的作用是在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。

如何获取

ServletConfig#getServletContext()
GenericServlet#getServletContext()
HttpSession#getServletContext()
ServletContextEvent#getServletContext()

在Servlet中:ServletContext context = config.getServletContext
在GenericServlet和HttpServlet:ServletContext context = this.getServletContext

方法

域对象方法:

void setAttribute(String name, Object value)
Object getAttribute(String name)
void removeAttribute(String name)
Enumeration getAttributeNames()

获取应用初始化参数

Servlet小结中我们知道,GenericServlet类有一个getServletConfig方法可以得到ServletConfig,而ServletConfig可以得到Servlet的初始化参数,但这只是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备。

而ServletContext可以得到应用初始化参数;即公共的初始化参数,为所有Servlet而用。

  • String getInitParameter("name");
  • Enumeration<String> getInitParameterNames();
获取资源相关方法

文件目录

获取真实路径

获取a.txt的真实路径:String path = context.getRealPath("/a.txt");
得到结果:path: X:\Java\apache-tomcat-7.0.42\webapps\review\a.txt

获取资源流

不只可以获取资源的路径,还可以通过ServletContext获取资源流,即把资源以输入流的方式获取:

  • 获取index.jsp资源流:InputStream in = servletContext.getResourceAsStream("/index.jsp");
  • 获取a.txt资源流:InputStream in = servletContext.getResourceAsStream("/WEB-INF/a.txt");
获取指定目录下所有资源路径

还可以使用ServletContext获取指定目录下所有资源路径,例如获取/WEB-INF下所有资源的路径:

		Set<String> set = context.getResourcePaths("/WEB-INF");
		for(String s : set) {
			System.out.println(s);
		}
		
>>>
/WEB-INF/lib/
/WEB-INF/classes/
/WEB-INF/web.xml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值