HttpServletResponse对象

1.HttpServletResponse对象html

(1).Web服务器收到一个http请求,会针对每一个请求建立一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest;浏览器

(2).HttpServletResponse对象能够向客户端发送三种类型的数据:a.响应头b.状态码c.数据tomcat

(3).本身去看HttpServletResponse的API服务器

(4).rsponse常见应用:网络

a.使用OutputStream向客户端写入中文:this

String data = "中国";

OutputStream stream = response.getOutputStream();//获取一个向Response对象写入数据的流,当tomcat服务器进行响应的时候,会将Response中的数据写给浏览器

stream.write(data.getBytes("UTF-8"));

//此时在html页面会出现乱码,这是由于:服务器将"中国"按照UTF-8码表进行编码,获得对应的码值假设是98,99,服务器将码值发送给浏览器。浏览器默认按照GB2312进行解码,在GB2312码表中对应的字符已不是"中国"

正确代码以下:

response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8

String data = "中国";

OutputStream stream = response.getOutputStream();

stream.write(data.getBytes("UTF-8"));

b.使用Writer向客户端写入中文:编码

PrintWriter writer = response.getWriter();

writer.write("中国");//一样会出现乱码,这是由于咱们将"中国"写入response对象时,tomcat服务器为了将数据经过网络传输给浏览器,必须进行编码,因为没有指定编码方式,默认采用ISO8859-1,

当浏览器接收到数据后,根据GBK解码必然出现乱码

正确代码以下:

response.setCharacterEncoding("UTF_8");//设置Response的编码方式为UTF-8

response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8,其实设置了本句,也默认设置了Response的编码方式为UTF-8,可是开发中最好两句结合起来使用

//response.setContentType("text/html;charset=UTF-8");同上句代码做用同样

PrintWriter writer = response.getWriter();

writer.write("中国");

c.使用Response实现文件下载:code

String path = this.getServletContext.getRealPath(“/中国.jpg”);

String fileName = path.subString(path.lastIndexOf(“\\”));

Response.setHeader(“content-disposition”,”attachment;filename”+URLENcode    r.encode(fileName,”UTF-8”));//设置响应头,告诉浏览器,该响应是下载响应,若是文件名包含中文,必须使用URL编码

……对文件进行读写
相关文章
相关标签/搜索