1.创建·download.jsp
<%@page import=“java.net.URLEncoder”%>
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
-
Servlet implementation class DownloadServlet
*/
@WebServlet("/DownloadServlet")
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;/**
- @see HttpServlet#HttpServlet()
*/
public DownloadServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
- @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {// 响应的字符编码,对中文乱码进行处理 response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8"); // 获取下载文件名称 String filename = request.getParameter("filename"); System.out.println("filename=" + filename); // 下载文件所在的位置 String folder = "/bookcover/"; // 通知浏览器以下载的方式打开 response.addHeader("Content-Type", "application/octet-stream"); response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8")); // 通过文件流读取文件 InputStream in = getServletContext().getResourceAsStream( folder + filename); // 获取response对象的输出流 OutputStream out = response.getOutputStream(); byte[] buffer = new byte[1024]; int len; // 循环取出流中的数据,从0开始,读到它的实际字节流 while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); }
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stubdoGet(request, response);
}
- @see HttpServlet#HttpServlet()
}