Response 发送响应消息头的相关方法
Response 发送响应消息体
- 字节流输出
getOutputStream(), 输出二进制格式的响应正文 - 字符流输出
getWriter(),输出内容全为字符的响应正文
注意: 以上两个输出对象不能同时使用。
实例-实现简单的下载功能
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/download?filename=001.jpg">下载图片</a>
</body>
</html>
// 获取下载文件的文件名
String filename = request.getParameter("filename");
// 获取文件的MIME类型,在之后设置响应头部时用到
String type = getServletContext().getMimeType(filename);
System.out.println(type);
// 设置头部信息
response.setHeader("Content-Type", type);
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
// 获取文件在服务器中真实的路径
String realPath = getServletContext().getRealPath("/download/" + filename);
System.out.println(realPath);
// 将文件转换为输入流
InputStream is = new FileInputStream(realPath);
OutputStream os = response.getOutputStream();
// 将文件输入流输入至响应的输出流中返回给客户端,即可实现简单的下载功能
int len = 0;
byte[] buf = new byte[1024];
while ( (len = is.read(buf)) != -1) {
os.write(buf, 0, len);
}
is.close();
注意: 需要待下载的文件放入根目录的download文件夹中。