Si no especificas la dirección absoluta del fichero, new File(nombre) te crea el fichero en el directorio desde el que ejecutaste el comando que puso en marcha la JVM. Así que no es que no te esté escribiendo el fichero, es que no sabes donde te lo está escribiendo

. Si imprimes fichero.getAbsolutePath() verás donde ha acabado tu fichero.
Mejor usa ServletContext.getRealPath(...) para crear el fichero relativo a donde está tu aplicacion desplegada, o usa algun path conocido que te devuelva alguna propiedad de sistema, como user.dir, temp.dir...
S!