Download de arquivos em java! URGENTE

Pessoal,

estou com um problema sério!
Fiz uma aplicação que tem o objetivo principal de fazer uploads e downloads de documentos.
Testei tudo em casa e até aí tudo blz… o problema foi quando eu implantei o sistema.
Acontece que quando o cliente clica para fazer o download do arquivo, este é gravado em um diretório no servidor e não na máquina do usuário.
Em casa eu não peguei esse erro porque estava tudo em uma máquina só. Meu problema é como fazer o download do arquivo, uma vez que esse arquivo está no banco de dados?

Alguem tem uma sugestão?

Obrigado

Crie um servlet com o seguinte trecho:

Conexao cnct = new Conexao();
try {
  cnct.conecta();
  PreparedStatement sql=cnct.conn.prepareStatement("SELECT arquivo,nome_arquivo FROM tbl_anexo where id_anexo="+request.getParameter("id_anexo"));
  ResultSet rs = sql.executeQuery(); 

     if (rs.next()) {
         Blob blob = rs.getBlob(1);

      byte[] blobData = blob.getBytes(1, (int)blob.length());
      String nome = rs.getString(2).replaceAll(" ", "_");
      
      String caminho = (getServletContext().getRealPath("/anexos/") + nome);

      //Now you got your data in blobData... write to file
       java.io.FileOutputStream fileOut = new java.io.FileOutputStream(caminho);
       fileOut.write(blobData);
       
       //System.out.println(caminho);
            
   		// aqui deve ser configurado direito, baseado no tipo do arquivo
   		response.setContentType("application/download");
   		//response.setContentType("multipart/form-data");       

  		 // mude "attachment" para "inline" para mostrar direto no browser
  		 String arq = "attachment;filename="+ nome;
   		response.setHeader("Content-Disposition", arq);
   		//response.setHeader( "Content-Disposition", "inline;filename="+nome+"");  

  		ServletOutputStream os = response.getOutputStream();
  		os.write( blobData );
  		os.close();
  
  		cnct.conn.close();
  
  		java.io.File file = new java.io.File(caminho);
  		file.delete();  
  		}
	}finally {		        
    	try{cnct.conn.close();}
    	catch(Exception e){e.printStackTrace();}
}

Obrigado Marcelo

Já consegui resolver o problema. Foi exatamente da forma que vc descreveu, mas eu não criei um servlet pra isso. Mas já está funcionando

Obrigado novamente