codice:
package upload;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
		
		//Create a factor for disk-based file items
		FileItemFactory factory = new DiskFileItemFactory(); 
		
		//Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload(factory);
		PrintWriter out = null;
		out = response.getWriter();
		response.setContentType("text/html");
		try {
			//Parse request
			List<FileItem> items = upload.parseRequest(request);
			//Process the upload items
			for(FileItem item :items){
				if(item.isFormField()){  
					//Se il valore di ritorno e true allora il campo è testuale
					String name = item.getFieldName(); //Nome del campo
					String value = item.getString();	//Valore associato
					this.visualizza1(out, name, value);
				}else{
					//Se inFormField è false allora abbiamo un file inserito nel server
					String name = item.getFieldName(); //Nome del campo input
					long size = item.getSize();		//Dimensione del file
					String fileName = item.getName();	//Il suo nome originale sul computer dell'utente
					String type = item.getContentType(); ////Tipologia MIME dei dati passati
					byte[] data = item.get();	//Il contenuto vero e proprio del file in questione
					this.visualizza2(out, name,size,fileName,type);
				}
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
			}

	private void visualizza1(PrintWriter out, String name, String value) {
		out.println("\n" +
				"<html>" +
					"<head>" +
						"<title>InserisciOrdineServlet</title>" +
					"</head>" +
					"<body>" +
						"

L'ordine e' stato inserito con successo</p>" +
						"

I dati inseriti sono</p>" +
						"

Nome: " + name + "</p>" +
						"

Value: " + value + "</p>" +
					"</body>" +
				"</html>");
		
	}

	private void visualizza2(PrintWriter out, String name, long size,
			String fileName, String type) {
		out.println("\n" +
				"<html>" +
					"<head>" +
						"<title>InserisciOrdineServlet</title>" +
					"</head>" +
					"<body>" +
						"

L'ordine e' stato inserito con successo</p>" +
						"

I dati inseriti sono</p>" +
						"

Nome: " + name + "</p>" +
						"

Size: " + size + "</p>" +
						"

FileName: " + fileName + "</p>" +
						"

Type: " + type + "</p>" +
					"</body>" +
				"</html>");
	}
		
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}

}
p.s= ho inserito l'html di risposta nella servlet solo perchè è un esempio di solito uso le jsp