Sunday, September 25, 2011

Servlet code to download text file from website

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

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 org.best.example;
 
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(); 
   }
}
 
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
                         \--org
                              \--best
\--example
                                          \--ServletDownloadDemo.class
 
4. Done , access URL http://localhost:8080/servlet/DownloadDemo , it will prompts user to download the text file automatically.
 
 

No comments: