package com.baeldung.servlets; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/download") public class DownloadServlet extends HttpServlet { private final int ARBITARY_SIZE = 1048; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); resp.setHeader("Content-disposition", "attachment; filename=sample.txt"); try (InputStream in = req.getServletContext().getResourceAsStream("/WEB-INF/sample.txt"); OutputStream out = resp.getOutputStream()) { byte[] buffer = new byte[ARBITARY_SIZE]; int numBytesRead; while ((numBytesRead = in.read(buffer)) > 0) { out.write(buffer, 0, numBytesRead); } } } }