[RESOLVIDO]Enviar arquivo via HttpServlet

Boa tarde galera d GUJ

Bom, eu tenho uma aplicação rodando e em determinado momento o usuario gera um arquivo .zip e ele precisa baixar esse arquivo, a minha pergunta é:
Como eu faço pra ele gerar o arwuivo e enviar o mesmo na resposta para o usuario?

Sei que tenho que usar o HttpServletRequest e ttpServletResponse, porem não sei como usalos, alguem poderia me dar uma luz?

Meu codigo esta assim:

public void criaArquivoZip() throws ZipException, IOException{
		try {
			File file= new File("C:/Users/Apanhamentos/Documents/workspace/Administracao/"+nomeZip);
			ziper.criarZip(file, list);

			//aqui ele deveria enviar o arquivo para o usuario...
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}
	

cara,

segue um exemplo em JSF

FacesContext facesContext = FacesContext.getCurrentInstance();
		
		HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
		OutputStream os = null;
		
		try {
			os = response.getOutputStream();
			response.setContentType("application/zip");
			response.setContentLength(ARQUIVO.length);
			response.setHeader("Content-disposition","attachment; filename=\"arquivo.zip\"");
			os.write(ARQUIVO);//pegar seu arquivo zip gerado e converte-lo em byte[]
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				if(os != null){
					os.flush();
					os.close();
				}
				facesContext.responseComplete();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

t+

Puts valeu cara funciona que é uma beleza, o codigo pra que quiser ver fico assim:

public void criaArquivoZip() throws ZipException, IOException{
		try {
			
			File fileGerado= new File(caminho+nomeZip);
			ziper.criarZip(fileGerado, list);
			
		    FacesContext facesContext = FacesContext.getCurrentInstance();  
            
            HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();  
            HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();  
            OutputStream os = null;  
            
            System.out.println();
            
            byte[] arquivoGerado= recuperaFileEmByte(fileGerado);
            
            try {  
                os = response.getOutputStream();  
                response.setContentType("application/zip");  
                response.setContentLength(arquivoGerado.length);  
                response.setHeader("Content-disposition","attachment; filename=\"arquivo.zip\"");  
                os.write(arquivoGerado); //pegar seu arquivo zip gerado e converte-lo em byte[]  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally{  
                try {  
                    if(os != null){  
                        os.flush();  
                        os.close();  
                    }  
                    facesContext.responseComplete();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
			
			nomeZip="";
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}
    private byte[] recuperaFileEmByte(File inFile) {  
        InputStream is = null;  
        byte[] buffer = null;
        System.out.println(inFile.getAbsolutePath());
        try {  
            is = new FileInputStream(inFile);  
            buffer = new byte[is.available()];  
            is.read(buffer);  
            is.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return buffer;  
    }  

Vlww

cara,

so mais uma dica, vc nem precisa salvar o arquivo fisicamente, vc pode criar seu arquivo zip e pegar o byte[].

t+