HttpServletResponse详解
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对 象。
request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。
1.负责向客户端(浏览器)发送响应头的相关方法
void addDateHeader(String name, long date) | 添加指定名称的响应头和日期值 |
---|---|
void addHeader(String name, String value) | 添加指定名称的响应头和值 |
void addIntHeader(String name, int value) | 添加指定名称的响应头和int值 |
boolean containsHeader(String name) | 返回指定的响应头是否存在 |
void setHeader(String name, String value) | 使用指定名称和值设置响应头的名称和内容 |
void setIntHeader(String name, int value) | 指定 int 类型的值到 name 标头 |
void setDateHeader(String name, long date) | 使用指定名称和值设置响应头的名称和内容 |
2.负责向客户端(浏览器)发送响应状态码的相关方法
void setStatus(int sc) | 设置响应的状态码 |
---|
3.常见应用
3.1:OutputStream流向客户端浏览器输出中文数据
核心代码
String data = "心若静,风奈何";
OutputStream outputStream = resp.getOutputStream();// 获取输出流
// 通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
resp.setHeader("content-type", "text/html;charset=UTF-8");
// 将字符转换成字节数组,指定以UTF-8编码进行转换
byte[] dataByteArr = data.getBytes("UTF-8");
//使用OutputStream流向客户端输出字节数组
outputStream.write(dataByteArr);
outputStream.flush();
outputStream.close();
3.2PrintWriter流向客户端浏览器输出中文数据
核心代码:
String data = "心若静,风奈何";
resp.setCharacterEncoding("UTF-8");// 设置将字符以"UTF-8"编码输出到客户端浏览器
PrintWriter out = resp.getWriter();// 获取输出流
// 将字符转换成字节数组,指定以UTF-8编码进行转换
resp.setHeader("Content-type", "text/html;charset=UTF-8");
out.write(data);// 使用PrintWriter流向客户端输出字符
out.flush();
out.close();
3.3:OutputStream或者PrintWriter向客户端浏览器输出数字
OutputStream outputStream=resp.getOutputStream();
resp.setHeader("Content-type", "text/html;charset=UTF-8");
outputStream.write("使用OutputStream流输出数字1:".getBytes("UTF-8"));
//outputStream.wait(1)如果木有转换就是下载
outputStream.write((1+"").getBytes());
outputStream.close();
resp.setHeader("content-type", "text/html;charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();//获取PrintWriter输出流
out.write("使用PrintWriter流输出数字1:");
out.write(1+"");
解决浏览器乱码的问题:
//这句话的意思,是让浏览器用utf8来解析返回的数据
resp.setHeader("Content-type", "text/html;charset=UTF-8");
//servlet 使用UTF-8 而不是默认的
resp.setCharacterEncoding("Utf-8");