美文网首页
HttpServletResponse

HttpServletResponse

作者: 咕咕咕咕咕基 | 来源:发表于2017-11-20 20:05 被阅读0次

字节流可以写任何数据,字符流只能写字符数据

getOutputStream字节流,getWriter字符流

1、response的outputStream输出中文问题 

程序以什么码表输出了,程序就一定要控制浏览器以什么编码打开:

response.setHeader("Content-type","text/html;charset=UTF-8");

String data = "中国";

OutputStream out = response.getOutputStream();

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

也可用html技术中<meta>标签模拟一个Http响应头来控制模拟器的行为:

String data = "中国";

OutputStream out = response.getOutputStream();

out.write("<meta http-equiv='content-type'  content='text/html';charset=UTF-8'>".getBytes());

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

2、response常见应用

1)向客户端输出中文数据

A.分别以OutputStream和PrintWriter输出

B.使用HTML语言里的<meta>标签来控制浏览器行为

2)文件下载和中文文件的下载

如果下载文件是中文文件,则文件需要经过url编码

3)输出随机图片

4)发送http头,控制浏览器定时刷新网页(REFRESH)

5)发送http头,控制浏览器禁止缓存当前文档内容

3.response实现请求重定向:response.sendRedirect("/day06/index.jsp");

等价于

response.setStatus(302); 

 response.setHeader("location", "/day06/index.jsp");

所以最好不要使用请求重定向,因为它会导致两次服务器请求,但是平时登录页面,购物这种情况最好使用请求重定向,不用转发的原因是,如果刷新会重新出来之前的页面(例如购物车显示页面,刷新会不停的出来购物车显示页面),重定向就不会出现这个问题,京东使用的是转发。

重定向特点:<1>浏览器会向服务器发送两次,意味着就有2个request\response

<2>用重定向技术,浏览器地址栏会发生变化

<3>用户登录和显示购物车时,通常会用到重定向技术

4、Reponse细节问题

(1)getOutputStream和getWriter()方法分别用于得到输出二进制数据、输出文本数据的ServletOutputStream、Printwriter对象

(2)getOutputStream和getWriter()方法这两个方法互斥,一次请求,调用其中任何一个方法后,不能再调用另一方法,否则会抛异常:java.lang.IllegalStateException:getOutputStream() has already bean...但是使用重定向就不会出现这个问题,因为是两次response请求

(3)

相关文章

网友评论

      本文标题:HttpServletResponse

      本文链接:https://www.haomeiwen.com/subject/fijvvxtx.html