功能:设置响应消息
1. 设置响应行
- 格式:协议/版本 响应状态码 状态码状态
- 设置状态码:
setStatus(int sc)
2. 设置响应头
setHeader(String name,String value)
3. 设置响应体
-
获取输出流(相对于当前程序来讲这是输出东西到客户端)
字符输出流:
PrintWriter getWriter()
字节输出流:
ServletOutputStream getOutputStream()
-
使用输出流,将数据输出到客户端浏览器
4. 重定向
//重定向到responseServlet2
/*
//1.设置状态码为302
response.setStatus(302);
//2.设置响应头location
response.setHeader("location", "/responseServlet2");
*/
//鉴于上述重定向代码参数大都固定,封装有更为简单的重定向方法
response.sendRedirect("/responseServlet2");
5. redirect和forward的区别?
重定向redirect的特点
- 地址栏发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是两次请求,不能使用request域对象来共享数据(request域对象仅作用 于一次请求的范围内)
转发forward的特点
- 转发地址栏不变
- 转发只能访问当前服务器的资源
- 转发是一次请求,可以使用request域对象来共享数据
6. 相对路径与绝对路径
相对路径
- 通过相对路径不可以唯一确定资源
- 相对路径以
.
开头,如./index.html
./
为当前目录../
为上一级目录- 如果相对路径开头什么都没有,那么默认为当前目录
./
如index.html
=./index.html
绝对路径(常用)
-
通过绝对路径可以唯一确定资源
-
绝对路径以
/
开头,如 /responseServlet2 -
给客户端浏览器使用,绝对路径中需要添加虚拟目录(项目的访问路径)
虚拟目录动态获取:
request.getContestPath()
//动态获取虚拟目录 String path = request.getContextPath(); response.sendRedirect(path+"/responseServlet2"); //<a>,<form>,重定向...等给浏览器使用的绝对路径,都需要添加虚拟目录
-
给服务器使用,绝对路径中无需添加虚拟目录
例:请求转发的路径
7. 服务器输出字符流
乱码问题
PrintWriter pw = response.getWriter();
获取的流的默认编码是ISO-8859-1response.setContentType("text/html;charset=utf-8");
设置该流的编码并告诉浏览器该流的编码
//下行代码作用:1.设置流的编码为utf-8 2.告诉浏览器流的编码
//response.setHeader("content-type", "text/html;charset=utf-8");
//简单的形式,设置编码
response.setContentType("text/html;charset=utf-8");
//1.获取字符输出流
PrintWriter writer = response.getWriter();
//2.输出数据
writer.write("你好啊啊啊,dominus!");
8. 服务器输出字节流
//告诉浏览器该流使用的编码
response.setContentType("text/html;charset=utf-8");
//1.获取字节输出流
ServletOutputStream sos = response.getOutputStream();
//2.输出数据
sos.write("你好 dominus!".getBytes("utf-8"));
9. 验证码
int width=