HttpServletResponse的说明

来源:互联网 发布:怎么在淘宝上投诉卖家 编辑:程序博客网 时间:2024/06/16 00:02

①http响应
一个http响应代表服务器向客户端会送的数据
http响应结构
状态行
消息头
空行
实体内容

状态行:
http/1.1 状态码 描述
200 表示成功
302 表示转向
response.sendRedirect("地址");
等同于
response.setStatus(302);
response.setHeader("Location","地址");
可以看看sendRedirect()这个函数是如何实现的,其实就是调用了response.setStatus()和
response.setHeader("Location","地址");
404 找不到资源
500 服务器端错误

http响应消息头的详解
Location:http://www.baidu.com/index.jsp
让浏览器重新定位到url
Server:apache tomcat
告诉浏览器服务器是什么
Content-Encoding:gzip
告诉浏览器我使用了gzip压缩
Content-length:80
数据大小
Content-language:
Content-Type:text/html;charset=gb2312
内容格式
Last-Modified:
告诉浏览器最近的更新的时间
Refresh:1;url=
过多久,刷新到url
Content-Disposition:
attachment;filename=
告诉浏览器有文件下载.
String filename="a1.jpg";
response.setHeader("Content-Disposition","attachment;filename="+filename);
//1获取要下载文件的全路径
String path=this.getServletContext().getRealPath("/images/"+filename);
//2创建文件输入流               

FileInputStream fis=new FileInputStream(path);
//做一个缓冲字节数组
byte buff[]=new byte[1024];
int len=0;//表示实际每次读取了多少个字节

OutputStream os=response.getOutputStream();
while((len=fis.read(buff))>0) {
                    os.write(buff,0,len);
}
//关闭            

  os.close();         

  fis.close();

//传输的编码
Transfer-Encoding:chunked
Set-cookie:    //cookie信息,后面在介绍
Expires:-1       //告诉浏览器如何缓存页面
Cache-Control:no-cache
Pragram:close/Keep-Alive

举例说明Refresh
response.setHeader("Refresh","5;url=");
表示隔5秒刷新到地址为url的页面

缓存页面举例说明:
(1)有些网站对及时性要求很高,如股票网站等
所以需要指定该网站不能被缓存
//指定该页面不缓存        response.setDateHeader("Expires",-1);
//为了兼容            response.setHeader("Cache-Control","no-cache");        response.setHeader("pragma","no-cache");
(2)有些网站要求每隔多长时间缓存一次
例如每隔1天缓存一次
response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000*24);



HttpServletResponse的说明

①getWriter()和getOutputStream();
区别:
(1)getWriter()用于向浏览器会送字符数据
(2)getOutputStream()向浏览器回送二进制数据和字符数据.
如何选择

如果是回送字符数据,使用getWriter(),

如果 是回送字节数据,使用getOutputStream();

这两个流不能同时使用.比如
OutputStream os=response.getOutputStream();
os.write("hello world".getBytes());
PrintWriter out=response.getWriter();
out.println("abc");
为什么会出现这样的情况?
(3)SendRedirect()实现重定向.

通过该方法将信息传送给下一个页面:比如
sendRedirect("welcome?uname=shunping")的形式
优点:传送信息的速度比较快
缺点:它只能传送字符串,而不能传送一个对象

原创粉丝点击