常用Http头信息解析应用

1. 通过response控制响应状态码

                200 OK 302 重定向 304 not modified 查找本地 404 页面不存在 500 服务器内部错误

在Servlet中用法:response.setStatus(404);


2. 通过302状态码 和 Location头信息字段 完成重定向


response.setStatus(302);
response.setHeader("Location", "welcome.jsp");


重定向代码可以 通过response.sendRedirect简化
        response.sendRedirect("welcome.jsp");


3. 设置响应数据的MIME格式



如果响应数据为html代码:
response.setContentType("text/html;charset=utf-8");


如果是一个下载文件的程序:
File file = new File("c:/mm.jpg");
查找tomcat/conf/web.xml 获得文件对应mime类型:
response.setContentType(getServletContext().getMimeType(file.getName()));


4. 通过refresh 头信息,控制页面自动刷新


        5秒后自动跳转 itcast主页:
response.setHeader("refresh", "5;url=http://www.itcast.cn");// 单位是秒


5. 设置响应的内容不缓存


        写三个头信息 为了解决浏览器兼容问题:
response.setHeader("expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");


设置数据缓存,缓存一小时:
response.setDateHeader("expires",
System.currentTimeMillis() + 1000 * 60 * 60);// 过期时间 = 当前时间+缓存时长


6. 通过content-disposition 控制文件以附件下载


File file = new File("d:/love.mp3");
response.setContentType(getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(file.getName(), "utf-8"));//将文件名进行编码


7. 将响应数据 以gzip格式压缩


response.setHeader("content-encoding", "gzip");
String s = "fgasfgdsfgadsfgasfgaskldfjlaskdfasdklfhasdfjkadshfjkasdhfjkasdhfasjkldfhkladshfklasdfksldhfkadskhfladsfhkladsfhasldhflkadsfklasldfhklasdfhaskldfhkladshfklasdhfklasdhfashldfkls";


// 压缩前的数据
byte[] b1 = s.getBytes();
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(out);
gzipOutputStream.write(b1);
gzipOutputStream.flush();
gzipOutputStream.close();
  System.out.println("原来大小:" + b1.length);

// 压缩后的内容
byte[] b2 = out.toByteArray();
System.out.println("压缩后大小:" + b2.length);


response.setHeader("content-length", b2.length + "");

response.getOutputStream().write(b2);


8. 通过请求头字段 referer防止盗链


String referer = request.getHeader("referer");
// referer不能为空 且 以网站路径开始
if (referer != null && referer.startsWith("http://www.estore.com")) {
// 不是盗链
} else {
// 盗链
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值