ServletContext基本介绍

ServletContext:servlet上下文(重要)
一:servletContext的概述
1.一个项目只有一个servletContext对象
2.我们可以在N多个servlet中来获取这个唯一的对象,使用它可以给多个servlet传递数据
3.与天地同寿:这个对象在tomcat启动时就创建,在tomcat关闭时才会死去

二:servletContext的作用
servletContext对象的作用是在整个web应用的动态资源之间共享数据
例如:在Aservlet中向ServletContext对象中保存一个值,然后在Bservlet
中获取这个值,这就是共享数据

三:获取ServletContext的方式
a: ServletConfig#getServletContext()
b: GenericServlet#getServletContext()因为GenericServlet实现了ServletConfig接口
c;HttpSession#getServletContext()
d: ServletContextEvent#getServletContext()
在servlet接口中怎么获取ServletConfig呢?
void init(ServletConfig config) tomcat启动时已经为你创建好了该对象
config.getServletContext()就行

四:域对象功能
ServletContext是javaWeb四大域对象之一
1.pageContext
2.ServletRequest
3.HttpSession
4.ServletContext
笼统的理解就可以把域对象理解为是在多个Servlet之间传递数据的
所有的域对象都有存取的功能,因为域对象内部有一个Map用来存储对象
1.setAttribute(String name,Object value)用来存储一个对象,也可以称之为存储一个域属性,跟Map集合中的put(String name,Object value)相似
如果多次调用这个方法,并且使用相同的name,那么会覆盖上一次的值,这个特性和map一样

2.Object getAttribute(String name)和map中的get(Object key)方法类似

3.void removeAttribute(String name):用来移除ServletContext中的域属性,如果没有该键,那么此方法就什么都没做

4.Enumeration getAttributeNames();获取所有的域属性; 跟Map中的KeySet()类似

五:获取应用初始化参数
servlet也可以获取初始化参数,但他是局部参数,也就是说一个servlet只能获取自己的初始化参数,不能获取到别人的
即初始化只为一个Servlet准备

ServletContext可以配置公共的初始化参数,为所有的servlet而用直接在web.xml下面的webapp根元素下写一个<context-param>标签

六:ServletContext中获取资源相关方法
getRealPath();返回的是一个带盘符的路径
getResourceAsStream();获取资源流
getResourcePaths("/WEB-INF"):获取指定目录下所有资源路径


七:获取类路径下资源
类路径对于一个JavaWeb项目而言
就是/WEB-INF/classes和/WEB-INF/lib每个jar包
当项目发布之后,其实所有src下的东西,都会放在classes目录下
src下除了java文件会变成.class文件放在classes目录下,其他的资源文件都会原封不动的放在classes目录下

主要获取方式有两种
ClassLoader:获取ClassLoader之前必须先得到Class
    ClassLoader类的getResourceAsStream(String path)
    是相对classes目录而言
Class:
    Class类的getResourceAsStream(String path)有两种格式
    加斜杠(/):是相当于classes目录而言
    不加斜杠:是相对当前.class文件而言

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值