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 {
// 盗链
}