Java Servlet Programing Laungage

Java Servlet Projects

Servlet Project 3

adplus-dvertising
Create an application for convert a simple file into compress (Jar) file through servlet
Previous Home Next

In this program, a file convert into compressed format like .jar. Two jar file is required for such operation.

  • Apache - commons- fileupload-io-1.2.2.jar (here)
  • Apache - commons-io-2.1.jar (here)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
      <servlet-name>JarServlet</servlet-name>
      <servlet-class>r4r.Servlet.JarServlet</servlet-class>
    </servlet>
	<servlet-mapping>
        <servlet-name>JarServlet</servlet-name>
        <url-pattern>/JarServlet</url-pattern>
    </servlet-mapping>
	 <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

Index.jsp

<%-- 
    Document   : index.jsp
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
     <meta http-equiv="Content-Type" 
	    content="text/html; charset=UTF-8">
     <title>r4r.co.in-servlet</title>
    </head>
    <body>
        <form>
            <h1>Access Servlet by servlet's Name!</h1>
            <a href="JarServlet">JarServlet</a>
        </form>
    </body>
</html>

Servlet Program

/*
 * Save as a JarServlet.java
 */
package r4r.Servlet;
import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.logging.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;

/**
 *
 * @author R4R
 */
public class JarServlet extends HttpServlet {

 private final static String DIR_PATH = "c:/Temp"; 
                  //Folder path
 private final static int MAX_SIZE = 1 * 1024 * 1024;  
               //1 MB size fix

 protected void processRequest
	 (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  try {
/* TODO output your page here */
out.println("<html>");
out.println("<head>");
out.println("<title>" + getServletInfo() + "</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet JarServlet at " 
	           + request.getContextPath() + "</h1>");
out.println("<form action=\"JarServlet\" method=\
           "POST\" enctype=\"multipart/form-data\">");
out.println("Select File:<input type=\"file\" name=\
           "myFile\" value=\"\" width=\"60\"/><br/>");
out.println
 ("<input type=\"submit\" value=\"Process Request\" />");
out.println("<input type=\"reset\" value=\"Reset\"/>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
  } finally {
out.close();
  }
 }

 @Override
 protected void doGet
 (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
  processRequest(request, response);
 }

 @Override
 protected void doPost
  (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();

  try {
File fileDirectory = new File(DIR_PATH);
//Check given directory is exit or not 
if (!fileDirectory.exists()) {
 fileDirectory.mkdir(); //directory not exit? create it
} else if (!fileDirectory.isDirectory()) {
 out.println(HttpServletResponse.SC_NOT_FOUND +
	 "Directory not found on " + DIR_PATH + " Path");
}

//check the request make from "multipart/form-data"
boolean isMultipartContent = 
	ServletFileUpload.isMultipartContent(request);
if (isMultipartContent) {

 //handle incoming request and limit its size
 DiskFileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload fileUpload = new ServletFileUpload(factory);
 fileUpload.setSizeMax(MAX_SIZE);

 //store the incomming request into list
 List<FileItem> items = fileUpload.parseRequest(request);
 Iterator<FileItem> it = items.listIterator();
 while (it.hasNext()) {
  FileItem fileItem = it.next();

  //incoming request must not be in compressed format
  if 
(!fileItem.getContentType().equals("application/x-zip-compressed"))
	  {

//Create a jar folder into the Directory
File jarFile = 
new File(DIR_PATH, FilenameUtils.getBaseName(fileItem.getName()) + ".jar");
jarFile.createNewFile();
JarOutputStream jarOutStream =
	  new JarOutputStream(new FileOutputStream(jarFile));

// Create a zipEntery(file inside into zip folder)
JarEntry jarEntry =
	  new JarEntry(FilenameUtils.getName(fileItem.getName()));
jarOutStream.putNextEntry(jarEntry);
DataOutputStream dataOutStream =
	new DataOutputStream(new BufferedOutputStream(jarOutStream));

//write data into file 
byte[] bs = fileItem.get();
for (int i = 0; i < bs.length; i++) {
 byte b = bs[i];
 //convert data into char before write
 dataOutStream.writeChar((char) b);
}

// free resource
dataOutStream.flush();
jarOutStream.closeEntry();
dataOutStream.close();

// send response(information) to client
out.println("Zip file <b>"
         + jarFile.getName() + "</b> write on <b><I>" + DIR_PATH + 
							" </I></b> path<BR>");
out.println("File name: <b>" + jarEntry.getName() + "</b><BR>");
out.printf("Acctual File size <b>(%d)</b> bytes",
	           dataOutStream.size());
out.printf("<BR>Compressed File size <b>(%d)</b> bytes",
	           jarEntry.getCompressedSize());
  } else {
response.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE,
	Process file already in compressed mode");
  }
 }
} else {
 response.sendError
	 (HttpServletResponse.SC_BAD_REQUEST, "Request must be multipart:");
}
  } catch (FileUploadException ex) {
Logger.getLogger(JarServlet.class.getName()).log(Level.SEVERE, null, ex);
  } finally {
out.flush();  //free resource
out.close();
  }
 }

 @Override
 public String getServletInfo() {
  return "r4r.co.in-JarServlet";
 }
}
Output of Program
Previous Home Next