1.Resonse的继承结构:
ServletResponse--HttpServletResponse
2.Response代表响应,于是响应消息中的 状态码、响应头、实体内容都可以由它进行操作
3.利用Response输出数据到客户端
response.getOutputStream().write("中文".getBytes())输出数据,这是一个字节流,是什么字节输出什么字节,而浏览器默认用平台字节码打开服务器发送的数据, 如果服务器端使用了非平台码去输出字符的字节数据就需要明确的指定浏览器编码时所用的码表,防止乱码问题!
esponse.addHeader("Contenttype","text/html;charset=gb2312")
response.getWriter().write(“中文”);输出数据,这是一个字符流,response会将此字符进行转码操作后输出到浏览器,这个过程默认使用ISO8859-1码表,而ISO8859中没有中文,于是转码过程中用?代替了中文,导致乱码问题。可以指定response在转码过程中使用的目标码表,防止乱码。
response.setCharcterEncoding("gb2312");
其实response还提供了setContentType("text/html;charset=gb2312")方法,此方法会设置content-type响应头,通知浏览器打开的码表,同时设置response的转码用码 表,从而一行代码解决乱码。
package com.servlet.response;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Response的作用: 1.打印信息到浏览器,利用response的两个方法,一个是字节输出流,一个是字符流
*
* @author 两点水
*
*/
public class OutServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
*
* //为了避免乱码,发送http请求到浏览器中,要求浏览器用utf-8进行编码
* response.setContentType("text/html;charset=utf-8");
* //字节输出流(服务器用utf-8进行编码)
* response.getOutputStream().write("谭永坚".getBytes("utf-8"));
*/
// 告诉服务器用utf-8进行编码
response.setCharacterEncoding("utf-8");
// 为了避免乱码,发送http请求到浏览器中,要求浏览器用utf-8进行编码
response.setContentType("text/html;charset=utf-8");
// 字符流输出
response.getWriter().write("两点水");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4.利用Response 设置 content-disposition头实现文件下载
设置响应头content-disposition为“attachment;filename=xxx.xxx”
利用流将文件读取进来,再利用Response获取响应流输出如果文件名为中,一定要进行URL编码,编码所用的码表一定要是utf-8
package com.servlet.response;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Response的作用: 1.下载资源文件
*
* @author 两点水
*
*/
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader(