JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现
2015-06-30 11:12
851 查看
一、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);
}
}
本程序中下载文件的地址放置在该项目的如下位置:
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);
}
}
本程序中下载文件的地址放置在该项目的如下位置:
相关文章推荐
- Java新技术---线程学习之ThreadLocal
- 今天终于收到了我的MacBook Pro 13 2015 转载记录下如何在mac上配置jdk
- java 对一个字符串进行加减乘除的运算
- Java Properties无需重启服务器即可动态读取最新键值
- Java Play的使用之HollowPlay
- Java中的守护线程 & 非守护线程(简介)
- 图形化插件对Eclipse的版本要求
- struts文件上传——文件过大时错误提示的配置问题说明
- struts配置中的常量定义
- Java设计模式(七)策略模式 模板模式
- 如何使用java synchronized进行线程同步
- Lucene:基于Java的全文检索引擎的简介
- Java编程常见报错及解决方案汇总
- json学习系列(8)JSON与JAVA数据的相互转换实例
- .net平台和java虚拟机中托管代码的优点和区别
- [java] 自动生成字母不重复的数组,并且用户输入一串字母,然后2个数组比较
- Java 序列化的高级认识
- 《Java课程实习》日志(周二)
- Tiny对JDK有什么要求么?
- 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)