servlet 服务器HTTP响应头设置示例(response用法)
1,Location
用于重定向,和返回状态码302结合使用。
代码示例:
response.setStatus(302);
response.setHeader("location","/day20131128/1.html");
这样,当请求服务器的时候可以重定向到这个/day20131128/1.html文件
也可以这样:
response.sendRedirect("/day20131128/1.html");//是上面两句的合成版。
重定向会向服务器发送两次请求,加重服务器负担。地址栏会变。完成购买这样的操作要重定向,而不要用转发,不然刷新就会又买一次,客户会愤怒。
2,Content-Encoding,gzip,Content-Length
用于指定压缩格式,和压缩长度,gzip就是压缩格式的。电信会以流量向大网站收钱,所以压缩可以省钱。。。
关于如何压缩的代码示例:
String data = "abcd";//要压缩给客户端的数据
ByteArrayOutputStream bout = new ByteArrayOutStream();
/*下面三行将数据压缩*/
GZIPOutputStream gout = new GZIPOutputStream(bout);
gout.write(data.getBytes());
gout.close();
byte gzip = bout.toByteArray();//获取压缩后的数据
//通知浏览器数据采用的压缩格式和长度
response.setHeader("Content-Encoding","gzip");
response.setHeader("Content-Length",gzip.length+"");
response.getOutoutStream().write(gzip);
3,Content-Type
response.setHeader("content-type","image/bmp"); //设置文件的格式请参考Tomcat的web配置文件,如下图
InputStream in = this.getServletContext().getResourceAsStream("/1.bmp");
int len = 0;
byte buffer[] = new byte[1024];
OutputStream out = response.getOutputStream();
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}

再来两个设置文字格式的例子:
response.setHeader("Content-type","text/html;charset=UTF-8"); //设置文字格式
String data = "中国";
OutputStream out = response.getOutputStream();
out.write(data.getBytes("UTF-8"));
response.setCharacterEncoding("UTF-8");
//response.setHeader("Content-type","text/html;charset=UTF-8"); //设置文字格式
response.setContentType("text/html;charset=UTF-8"); //以上一句可以换成这一句
String data = "中国";
PrintWriter out = response.getWriter();
out.write(data);
4,Refresh
服务器通知浏览器隔多长时间,刷新一次页面。比如聊天室。
代码:
response.setHader("refresh","3");//三秒刷新一次。
//
response.setHader("refresh","3;url='http://www.baidu.com'");//三秒后跳转到百度。
String data = "aaaa";
response.getOutputStream().write(data.getBytes());
5,Content-Disposition
告诉浏览器,以下载方式打开数据。
代码:
response.setHeader("content-disposition","attachment;filename=3.jpg"); //
InputStream in = this.getServletContext().getResourceAsStream("/3.jpg");
int len = 0;
byte buffer[] = new byte[1024];
OutputStream out = response.getOutputStream();
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
文件名是汉语名:
String path = this.getServletContext().getRealPath("/download/美女.jpg");
String filename = path.substring(path.lastIndexOf("\\")+1);
response.setHeader("content-disposition","attachment;filename=" + URLEncoder.encode(filename,"UTF-8")); //汉字需要经过URL编码
InputStream in = null;
OutputStream out = null;
try{
in = new FileInputStream(path);
int len = 0;
byte buffer[] = new byte[1024];
out = response.getOutputStream();
while((len = in.read(buffer))>0){
out.write(buffer,0,len);
}
}finally{
if(in!=null){
try{
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
6,Transfer-Encoding
服务器通过该头告诉浏览器数据的传送格式,chunked表示块传送
7,Set_cookie:SS=Q0=5Lb_nQ;path=/search
8,ETag
缓存相关。服务器根据 web资源的内容生成的 资源对应的串、标示符,客户机发送来的数据会带着服务器发给它的ETag这个东西。服务器根据这个东西有没有改变来决定是否让客户机调用其缓存。这个可以实现实时性很高的更新。如果是按If-Modifed-Since和Last-Modified来确定更新,则在500ms内的差别会被忽略。
9,Expires
服务器通过这个,告诉浏览器把服务器发送的资源缓存保存到什么时间。-1或0,则不缓存。
response.setDataHeader("expires",Sysem.currentTimeMillis()+1000*3600);//缓存数据3600秒。剩下这一个小时再访问这个servlet都不会向服务器发送请求,而是直接去拿缓存。
String data = "djklasja";
response.getWriter().write(data);
10,以下两个头和也是控制浏览器不要缓存。实时性要求很高的数据不要缓存,比如股票行情。
Cache-Control:no-cache
Pragma:no-cache
11,Range
HTTP请求头字段:
该头指示服务器只传输一部分呢Web资源,可以实现断点续传功能。Range字段可以通过三种格式设置要传输的字节范围:
Range: bytes=1000-2000 传输范围从1000到2000字节。
Range: bytes=1000- 传输Web资源中第1000个字节以后的所有内容。
Range: bytes=1000 传输最后1000个字节。
HTTP响应消息头字段:
Accept-Ranges:这个字段说明Web服务器是否支持Range。支持则返回“Accept-Ranges:bytes”,不支持则“Accept-Ranges:none”。
Content-Range:指定了范围的Web资源的字节发内,这字段值的格式是:Content-Range:1000-3000/5000(返回给客户端1000字节到3000字节部分,整个资源大小为5000)
客户端模拟请求服务器某资源5个字节后的内容下载:
URL url = new URL(http://localhost:8080/day05/a.txt);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("Range","bytes=5-");//Tomcat6以上才开始支持断点续传
InputStream in = conn.getInputStream();
int len = 0;
byte buffer[] = new byte[1024];
FileOutputStream out = new FileOutputStream("c:\\a.txt",true);//true表示从后边接着写,而非从头覆盖。
while((len = in.read (byte))!=-1)
out.write(buffer,0,len);
in.close();
out.close();
servlet 服务器HTTP响应头设置示例(response用法)的更多相关文章
- HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码
原文地址:HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码 HttpServletRespo ...
- HTTP 响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding
Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding 客户端(PC浏览器或者手机浏览器)在接受到Tomcat的响 ...
- HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码
HttpServletResponse 和 ServletResponse 都是接口 具体的类型对象是由Servlet容器传递过来 ServletResponse对象的功能分为以下四种: ...
- Servlet 服务器 HTTP 响应
状态行包括 HTTP 版本(在本例中为 HTTP/1.1).一个状态码(在本例中为 200)和一个对应于状态码的短消息(在本例中为 OK). 下表总结了从 Web 服务器端返回到浏览器的最有用的 HT ...
- 最全 HTTP 安全响应头设置指南
销售“安全记分卡”的公司正在崛起,并已开始成为企业销售的一个因素.这些公司组合使用 HTTP 安全报头和 IP 信誉来进行评级.不过,在很大程度上,公司的得分取决于对外开放网站上设置的安全响应报头.本 ...
- http响应头设置
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...
- nginx自定义模块记录上游服务器特定响应头
功能,服务器通过扩展自定义命令,记录上游的服务器返回的特定响应头内容,记录到本地文件中 代码如下: /* * Copyright (C) Ciaos */ #include <ngx_confi ...
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding
户端(PC浏览器或者手机浏览器)在接受到Tomcat的响应的时候,头信息通常都会带上Content-Length ,一般情况下客户端会在接受完Content-Length长度的数据之后才会开始解析.而 ...
- servlet 服务器HTTP请求头说明
Accept:用于告诉服务器,客户机支持的数据类型. Accept-Charset:用于告诉服务器,客户机采用的编码. Accept-Language:客户机的语言环境. Host:客户机通过该头告诉 ...
随机推荐
- Nginx和Tomcat负载均衡实现session共享
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架. 此框架的优 ...
- IIS HTTPS 禁用不安全的SSL2.0
禁用: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols 验证:
- 深度学习阅读列表 Deep Learning Reading List
Reading List List of reading lists and survey papers: Books Deep Learning, Yoshua Bengio, Ian Goodfe ...
- Jquery Mobile实例--利用优酷JSON接口读取视频数据
本文将介绍,如何利用JqueryMobile调用优酷API JSON接口显示视频数据. (1)注册用户接口. 首页,到 http://open.youku.com 注册一个账户,并通过验证.然后找到A ...
- cocos2dxHellowoed 发现 2.2.3
cocos2d 笔记 文件夹介绍 cocosdx ----->cocos2d主要代码 CocosDenshion---->cocos2d的声音的 Document------>文档 ...
- 微博与Redis系统技术文章记录
Redis 持久化,有两种: rdb 和 aof, rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开 ...
- 第四章 第一个rabbitmq程序
rabbitmq消息发送模型 要素: 生产者 消费者 交换器:生产者将消息发送到交换器 队列:交换器通过某种路由规则绑定到指定队列,将消息加入队列,消费者从队列消费消息 前提: 引入rabbitmq的 ...
- C/C++/Java 程序计时功能函数
编写程序肯定要使用计时功能,来判断程序的执行时间.今天Google了一下,自己就梳理总结一下: (1)C/C++程序计时 C/C++中使用的计时函数是clock(). C语言中的头文件对应是#incl ...
- 使用FlexiGrid实现Extjs表格的效果-网络传输小,更方便!
近一段时间Extjs真的是风光无限好,只要是个做CRM/HRM之类的企业现在都在琢磨怎么在项目中用它,不过兄弟我可是不敢,原因很简单:太大/太笨/源码不好调试.但是对于Extjs漂亮的表格与功能的 ...
- Android之AlarmManager
Android平台中,Alarm Manager Service控制着闹钟和唤醒功能.和其他系统服务一样,提供了一个辅助管理类-AlarmManager,我们只需要使用AlarmManager即可调用 ...