一、ServletContext对象的概念

Context : 上下文
代表整个web应用,可以和Tomcat服务器进行通信

二、获取ServletContext对象

1、通过request对象获取(用这个获取叭,比较不会容易忘)

request.getServletContext( )

2、通过HttpServlet获取

this.getServletContext( )

三、ServletContext对象的功能

*1、获取文件的MIME类型

MIME类型:在互联网通信过程中定义的一种文件数据类型
MIME类型格式:大类型/小类型 例如:text/html image/jpeg


获取MIME类型的方法:
servletContext . getMimeType(String 带后缀名的文件名称)
例如下面通过用超链接的filename属性值来获取图片img1.jpg的MIME类型:
QQ图片20200710225320.png
QQ图片20200710225324.png
QQ图片20200710225326.png
为什么通过带后缀名的文件名称就可以获取到文件的MIME类型呢?
因为ServletContext对象可以和Tomcat服务器进行交流,而存储着所有MIME类型的配置文件都在Tomcat里,所以可以通过带后缀名的文件名称来找到对应的MIME类型!
QQ图片20200710184626.png
QQ图片20200710184628.png

2、ServletContext是域对象,可以共享数据

ServletContext对象的域范围:只要服务器没关,那么用ServletContext对象存的数据就可以被所有的资源文件取来访问!就算不是一次请求之间的资源文件也可以访问!就算换个浏览器访问也可以共享!用这个方法得谨慎!


setAttribute(String name, Object value)
getAttribute(String name)
removeAttribute(String name)

*3、获取文件的服务器路径(真实路径)

文件的服务器路径:由于一个WEB项目既在服务器里(out目录里面)保存了一份,又在本地的工作空间里保存了一份,那么文件的服务器路径就是对应于服务器里面的文件路径而不是本地工作空间里的文件路径

方法:

  1. (String) getRealPath(String path)

获取文件的服务器路径时用getRealPath方法传入的文件路径参数的规则:
看工作空间里的文件存放的地方,分两种情况:
1、放在蓝圈web目录下的资源文件的文件路径参数写法: /包名/资源路径
若没有包名,则直接写资源路径
A情况:文件直接放在蓝圈web目录下,没有包
QQ图片20200710212057.png
B情况:文件放在蓝圈web目录下的一个叫做WEB-INF的包
QQ图片20200710212059.png


2、放在src目录下的资源文件的文件路径参数写法: /WEB-INF/classes/资源路径
QQ图片20200710212101.png


QQ图片20200710212522.png
上:服务器路径
下:工作空间路径