Here’s a servlet code example to download a text file from a website.

For example

Let’s say a text file named “testing.txt” , and you want to let user download it with a URL , for example “http://localhost:8080/servlet/DownloadDemo” .

1. Create a text file named “testing.txt” , put it into the project root folder.

\--servlet (project root folder)
      \--testing.txt (download file here)
      \--WEB-INF
           \--web.xml

2. Servlet code

package com.mkyong;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ServletDownloadDemo extends HttpServlet{
 
  private static final int BYTES_DOWNLOAD = 1024;
 
  public void doGet(HttpServletRequest request, 
   HttpServletResponse response) throws IOException{
	response.setContentType("text/plain");
	response.setHeader("Content-Disposition",
                     "attachment;filename=downloadname.txt");
	ServletContext ctx = getServletContext();
	InputStream is = ctx.getResourceAsStream("/testing.txt");
 
	int read=0;
	byte[] bytes = new byte[BYTES_DOWNLOAD];
	OutputStream os = response.getOutputStream();
 
	while((read = is.read(bytes))!= -1){
		os.write(bytes, 0, read);
	}
	os.flush();
	os.close();	
   }
}
Note
The “getResourceAsStream()” method with a forward slash (“/”), which represent the root of your web application.

3. Web deployment descriptor

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
	<display-name>serlvetdemo</display-name>
 
	<servlet>
		<servlet-name>ServletName</servlet-name>
		<servlet-class>com.mkyong.ServletDownloadDemo</servlet-class>
	</servlet>
 
	<servlet-mapping>
		<servlet-name>ServletName</servlet-name>
		<url-pattern>/DownloadDemo</url-pattern>
	</servlet-mapping>
 
</web-app>

4. Compiled it and copy to the Tomcat folder

\--Tomcat
     \--webapps
          \--servlet 
               \-- testing.txt (download file)
               \--WEB-INF 
                    \--web.xml
                    \--classes
                         \--com
                              \--mkyong
                                   \--ServletDownloadDemo.class

4. Done , access URL http://localhost:8080/servlet/DownloadDemo , it will prompts user to download the text file automatically.

Note
You may interest this file download example in Struts 1.x
Any Java questions or problems? please post at this JavaNullPointer.com forum, see you there ~