JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现
一、HTTP中常用响应头
- Location: http://www.it315.org/index.jsp
- Server:apache tomcat
- Content-Encoding: gzip
- Content-Length: 80
- Content-Language: zh-cn
- Content-Type: text/html; charset=GB2312
- Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
- Refresh: 1;url=http://www.it315.org
- Content-Disposition: attachment; filename=aaa.zip
- Transfer-Encoding: chunked
- Set-Cookie:SS=Q0=5Lb_nQ; path=/search
- ETag: W/"7777-1242234904000"
- Expires: -1
- Cache-Control: no-cache
- Pragma: no-cache
- Connection: close/Keep-Alive
- Date: Tue, 11 Jul 2000 18:23:51 GMT
二、设置缓存信息
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("-----------CacheServlet-------------");
// 设置相应头信息
// 设置缓存时间100秒
// response.setDateHeader("Expires",
// System.currentTimeMillis()+100*1000);
// 禁止使用缓存
// response.setDateHeader("Expires", 0);
// response.setHeader("Cache-Control", "no-cache");
// response.setHeader("Pragma", "no-cache");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
// 读取文件
String path = getServletContext().getRealPath("/a.txt");
FileReader reader = new FileReader(new File(path));
char buffer[] = new char[256];
int len = 0;
while ((len = reader.read(buffer)) != -1) {
out.println(new String(buffer, 0, len));
}
reader.close();
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* 最后一次修改的时间
*/
@Override
protected long getLastModified(HttpServletRequest req) {
String path = getServletContext().getRealPath("/a.txt");
File file = new File(path);
return file.lastModified();
}
a.txt文件内容:
a.txt在项目中的放置地址:
结果:
三、下载功能源代码如下
public class DownServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = request.getServletContext().getRealPath("/down/中国.png");
File file = new File(path);
// 下载的方式打开此操作(指定编码方式,下载文件名与源文件一致)
response.addHeader("Content-Disposition", "attachment;fileName="
+ URLEncoder.encode(file.getName(), "UTF-8"));
OutputStream os = response.getOutputStream();
InputStream is = new FileInputStream(file);
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
is.close();
os.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
本程序中下载文件的地址放置在该项目的如下位置:
JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现的更多相关文章
- JavaWeb学习记录(二十三)——文件上传与下载
一.导入jar包
- HTTP学习记录:四、头信息(请求和响应)
学习资源主要为:@小坦克HTTP相关博客 一.请求头信息(Request Header) 请求头信息包含比较多,如下: 1.Cache头域 if-modified-Since 作用:把浏览器端缓存页面 ...
- javaweb笔记6多个响应头以及 HttpServletResponse对象
1 常见的响应头 Location: http://www.it315.org/index.jsp 重定向的地址.配合302的状态码一起使用,实现重定向效果. Content-Type: te ...
- JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码
一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...
- JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能
一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...
- JavaWeb学习记录(九)——Cookie的增加、删除、查看
一.servlet功能代码: public void doGet(HttpServletRequest request, HttpServletResponse response) ...
- JavaWeb学习记录(二十六)——在线人数统计HttpSessionListener监听实现
一.session销毁控制层代码 public class InvalidateSession extends HttpServlet { public void doGet(HttpServletR ...
- javaweb学习记录(1)
Java基础学习笔录 1.运行java程序,出现bad version number in.class file 编译器()的版本号高于运行环境(jre)的版本号,可以降低编译器版本号,也可以通过提升 ...
- JavaWeb学习记录(六)——用户登录功能
使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...
随机推荐
- https需要的类
import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import j ...
- C++中两块内存重叠的string的copy方法
如果两段内存重叠,用memcpy函数可能会导致行为未定义. 而memmove函数能够避免这种问题,下面是一种实现方式: #include <iostream> using namespac ...
- SharePoint 2016 的新特性概览(二)(What's New for IT Professionals in SharePoint Server 2016)
博客地址:http://blog.csdn.net/FoxDave SharePoint 2016 的新特性 三. 监测和数据(Insights and Data) 实时数据监测,包括对使用情况.存储 ...
- SharePoint 2013 Nintex Workflow 工作流帮助(九)
博客地址 http://blog.csdn.net/foxdave 前叙:假期结束了,知道为什么假期如此短暂吗?因为假期的每天只有半天.春节过完了,新的一年开始了,大家或许之前在新年的时候都许下了自己 ...
- hdu 2061
PS: 以为找个简单来恢复信心..结果碰到那么傻逼的题目... 题意:给出学分和成绩,算GPA...关键是注意换行....它要求的换行我觉得超级奇怪...除了第一个正常,其他的输入完之后先一个换行. ...
- Interview----最长连续乘积字串
题目描述: 给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8. 也就是说,上述数组中,3 0.5 8这3个数的乘积3*0 ...
- 转发:在开发机上绕过Chrome同源策略的办法
在开发机上绕过Chrome同源策略的办法 标签: Chrome同源策略跨域 2013-08-21 18:33 4399人阅读 评论(0) 收藏 举报 分类: Chrome扩展(1) 版权声明:本文为博 ...
- linux常用命令6:关机重启命令
关机重启命令 1.shutdown命令 shutdown [选项] 时间 选项: -c 取消前一个关机命令 -h 关机 -r 重启 2.其他关机命令 halt poweroff init 0 3.其 ...
- eclipse如何连接oracle 11g数据库
1.首先先建立一个项目DB,右键点击DB,选择Build Path-->Configure Build Path进入 通过Add External JARs..选择D:\orcl\app\hr\ ...
- CSS 实现:checkbox
<div class="wrap"> <label>性别:</label> <div class="cb-wrap"& ...