**
ServletContext
**
servletContext:
定义:
是服务器对象,可以获得整个web项目的初 始化的一些参数。本质是是一个容器,负责存储一些内容。
注意:
资源是整个web项目的资源,是共享的,且只有这一个容器(一个项目只有一个根目录,即对应一个管理者或者一个容器)。
如何获取servletContext对象
使用this关键字
第一种:
this.getServletConfig().getServletContext()
第二种:
this.getServletContext()
获取项目下的资源:
get 获取 set赋值
-
getResourAsStream()—获取项目资源
attribut–属性(用于获取某个资源常用getAttribute(String key)) -
get RealPath("")—获取发布项目的在本地的真实路径(绝对路径)。
注意: 括号里采用的是字符串拼接方式
如:自定义名.getRealPath("/img/1.jpg");—则其路径为: 真实路径+\img\1.jpg -
setAttribute( String key , Object value) 存数据 和集合map相似,key与值的方式 。
注意: 重复设一样的值相当于改值 -
removeAttribute( String key ) 删除数据
注意: 如果从容器中没有获得数据的话 返回值是null 。
全局设置参数:- 首先在web.xml中设置数据
- 注意:
全局变量:它的格式也是key=value的方式。
全局编码
如:
<context-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</context-param>
查看全局参数
sc.getInitParameter(“param-name的名称”);
**
Response
**
response分为:行头体三部分
行:
固定格式: 协议版本(固定的HTTP/1.1) 状态码
状态码:
200:请求正常响应成功
302 :重定向
304:浏览器读取缓存
404: 服务器资源找不到
500:服务器报错
设置状态码: setStatus()
发送错误: sendError()
头:
格式: key:value
响应头:
location:地址(一般可以与状态码302重定义使用)response.sendRedirect(“跳转路径”)
底层代码:
public void sendRedirect(String path变量){
response.setStatus(302);
response.setHeader("location" , path变量);
}
refresh:定时刷新(浪费资源)
1.定时刷新
response.setHeader("refresh" , "秒")
2.定时跳转
response.setHeader("refresh" , "秒;url=地址")
content-encoding:内容编码(互联网在数据传输的时候,将数据压缩打包的格式。如 zip压缩,rar压缩等。
content-disposition: 下载使用。
格式:
key:value
content-disposition: attachment;filename=文件的名称。
content-type: 处理编码使用(一般在流的位置设置响应体的编码)
content 内容 -type 类型
体:
服务器响应回来其是就是html源码
流:
字符流:一般用于输出输入文字信息
声明: PrintWriter writer = response.getWriter();
字节流:一般用于输出输入文件,视频,音频等资源。
声明: response.getOutputStream().write(“内容”);
打印流:一般输出输入文件信息或者文字信息
write(“文本”) 输出文字信息
write(文件) 输出文件信息
**
乱码:
**
在页面响应出现乱码:一般采用 设置响应头编码格式和数据类型response.setHeader(“content-type” , “text/html;charset=utf-8”); (注意放到第一个行)
**
下载案例
**
- 设置响应头 content-disposition
- 获取下载资源
- 设置输出流(字符流或者字节流看文件来确定)
- 设置输出流
编码:
//设置下载的头(放到第一行)
response.setHeader("content-disposition" , "attachment;filename=2.jpg");
//1.程序获得图片 获得图片的流
InputStream is = this.getServletContext().getResourceAsStream("/img/1.jpg");
//2.获得输出的字节流
ServletOutputStream os = response.getOutputStream();
//3.使用字节流将图片输出即可 is -> os 流转换(导入第三方jar包)
IOUtils.copy(is, os);//直接转换