ServletConfig对象(每个servlet都有)
域对象
域就是表示在一定范围内 有作用的对象
ServletContext(作用范围内最大的域对象)
作用于整个工程(项目) 都能使用该对象
并且整个项目 只有一个该对象 是单例对象
作用:利用单例的特点 可以进行传值
该对象 内部维护了一个map集合
注意:所有的域对象 内部都是维护一个map集合
所有的域对象都有
setAttribute
getAttribute 这两个方法
获取ServletContext对象
方式1:可以通过ServletConfig对象来获取
// 方式1 ServletContext context = this.getServletConfig().getServletContext();
// 向context对象中 保存一个值
context.setAttribute("username","wanglong");
方式2:通过父类来获取
// 方式2(通过父类来获取 该方法在servletConfig接口中)
ServletContext context = this.getServletContext();
// 获取context的配置信息
String value = context.getInitParameter("kuner");
System.out.println(value);
作用:
1.存值取值
2.获取全局配置文件
3.可以获取服务器上所有的资源真实路径
真实路径(在服务器上的路径)
getRealPath()
4.可以进行请求转发
// 取出context域中的值
ServletContext context = this.getServletConfig().getServletContext();
Object object = context.getAttribute("username");
System.out.println(object);
// 读取a文件
// 参数的路径是相对于工程名来填的
String path = this.getServletContext().getRealPath("/WEB-INF/classes/a.properties");
System.out.println(path);
// 读文件
FileInputStream fis = new FileInputStream(path);
Properties properties = new Properties();
properties.load(fis);
System.out.println(properties.getProperty("key"));
响应 response
响应行 响应的状态码 200 http 协议1.1
响应头
告诉浏览器我要做下载操作
告诉浏览器你需要什么编码格式来解析我的响应
响应体 响应浏览器的内容
TomCat 默认编码格式 iso-8859-1
response.setContentType("text/html;charset=UTF-8");
设计响应头(告诉浏览器用什么格式去解析数据) 二合一写法(之后再写servlet 第一个就写这个)
接到请求之后 向浏览器中写入字符串
通过响应对象 response 中的流对象 回写
注意:如果你在当前servlet使用了字符流 那么就不能再使用字节流
// 获取服务器的图片路径
// 一般context域 使用 application当名字
// 读文件
// 通过response 对象获取字节流
// 回写
String path = this.getServletContext().getRealPath("/WEB-INF/classes/啦啦啦.png");
File file = new File(path);
String name = file.getName();
// 修改文件名的编码格式
name = new String(name.getBytes(),"iso-8859-1");
response.setHeader("content-disposition", "attachment;filename="+name);
response.setHeader("content-type","image/png");
// 截取文件名
// 添加响应头
FileInputStream fis = new FileInputStream(path);
int len = 0;
byte[] b = new byte[1024];
ServletOutputStream out = response.getOutputStream();
while ((len = fis.read(b)) != -1) {
out.write(b, 0, len);
}
fis.close();