一、什么是SercletContext对象?
ServletContext对象代表了整个Web应用,可以和程序的容器(也就是服务器)来通信
二、ServletContext对象的获取
1、通过request对象获取
request.getServletContext()
2、通过HttpServlet获取
this.getServletContext()
举例示范:
注意:这里我们使用两种方式获取的ServletContext对象是同一个对象,如图所示
三、ServletContext对象的功能
1、获取MIME类型
(1) 什么是MIME类型呢?
MIME类型就是在互联网通信过程中定义的一种文件数据类型
格式为:大类型/小类型
例如:上次我们说不用管的那个text/heml就是MIME类型;还有image/jpeg也是MIME类型
(2) 如何获取MIME类型呢?
使用String getMimeType(String file)
方法获取
举例示范:
(3) 为什么能获取到对应MIME关系?
因为MIME关系全部存放在服务器中的web.xml文件当中,又因为ServletContext对象可以和Servlet应用通信,所以可以在servlet中通过ServletContext获取
2、域对象:用于共享数据
(1)有关方法
① setAttribut(String name,Object value)
:存放数据
② getAttribute(String name)
:获取数据
③ removeAttribute(String name)
:删除数据
(2)ServletContext对象的作用范围:
所有用户的所有请求
3、获取文件的真实路径(也就是服务器路径)
我们需要了解我们在创建了一个web项目的时候,我们的Tomcat服务器中有一份我们的web项目,我我们的工作空间(src目录下)同样也有一份web项目,而我们通过浏览器访问我们的web项目的时候,其实访问的是Tomcat服务器当中的web项目,所以Tomcat中的web项目的路径才是真实路径
(1)获取真实路径的方法
String getRealPath(String path)
举例示范
文件下载案例
一、案例需求
- 页面显示超链接
- 点击超链接后弹出下载提示框
- 完成图片文件下载
二、分析
- 浏览器中默认的超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能被解析,则弹出下载提示框,这种不满足需求,所以我们不能使用这种方法
- 任何资源都必须弹出下载提示框
- 使用响应头设置资源的打开方式
三、步骤
- 定义页面,编辑超链接href属性,指向Servlet,传递资源名称filname
- 定义Servlet
① 获取文件名称
② 使用字节输入流加载文件进内存
③ 指定response的响应头
④ 将数据写出到response输出流
代码如下:
如果我们在显示文件名称是中文名称的时候出现了乱码问题,我们可以获取浏览器版本信息然后设置编码格式,这种操作我们可以从网上自己找工具资源也就是别人写好的类资源,我们可以直接使用十分的方便。