Utilizando servlets para tal efecto, podríamos realizar tareas alternativas como por ejemplo cuando un cliente hace un download de un determinado archivo, anotar el nombre del cliente y el fichero que se bajó, o cuando hace un upload de un fichero comprobar previamente si el usuario está autorizado a grabar el archivo en ese determinado sitio.
El ejemplo del servlet para realizar el download se encuentra en el archivo:
/Curso Java/Java/ejemplos/curso4/ServletDownload.java
Notar que la clave en este servlet se encuentra en el tipo MIME al que fijamos la respuesta de nuestro servlet:
res.setContentType("file/text");
Al poner un tipo MIME con un tipo principal file, el navegador cuando recibe la respuesta, en lugar de visualizarla en el browser lo que hará será abrirnos el típico diálogo de Save File...
El ejemplo del servlet para realizar el download se encuentra en los archivos:
/Curso Java/Java/ejemplos/curso4/ServletUpload.java
/Curso Java/Java/ejemplos/curso4/DivideMultiPart.java
/Curso Java/Java/ejemplos/curso4/FileUpload.html
Notar que para hacer el upload de un archivo en el fichero HTML indicamos que el formulario será del tipo multipart/form-data, y posteriormente en lugar de recibir la petición en la forma habitual, con los típicos métodos para leer los parámetros de HttpServletRequest.getParameter y HttpServletRequest.getParameters, lo hacemos creando un flujo de entrada sobre el objeto del tipo HttpServletRequest y leyendo directamente sobre él, para lo cual haremos uso de la clase DivideMultiPart, ya que como dentro de ella se explica, la estructura de un archivo multipart es más especial.