[resolvido]poi hssf xls jsp servlet

Pessoal, estou criando um sistema para cadastro de chamados, e gostaria de disponibilizar o dados, “tabelas” do banco de dados, em excel , utilizando POI HSSF. Utilizando classe e atribuindo um endereço onde a planilha será gerada esta funcionando , porém meu intuito é que o usuário consiga baixar o excel direto da pagina jsp através de um botão, pesquisando na internet e em revistas encontrei diversos exemplos e muitos bugs mais nenhum exemplo utilizando servlet e jsp. Abaixo a classe

package br.com.teste;

import java.io.*;
import java.sql.PreparedStatement;

import java.sql.Connection;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

import br.com.util.ConnectionFactory;
import br.com.dao.JDBCChamadoDAO;

import com.mysql.jdbc.ResultSet;

public class CreateExlFile{ // classe que gera o arquivo
static Connection connection=null;
public static void main(String[]args){

	connection = ConnectionFactory.getCoonection();
	
	try {
		String filename="G:/NewExcelFile.xls" ;
        HSSFWorkbook workbook=new HSSFWorkbook();
        HSSFSheet sheet =  workbook.createSheet("Tabela1");  
        
        HSSFRow rowhead=   sheet.createRow((short)0);
        rowhead.createCell(0).setCellValue("numChamado");
        rowhead.createCell(1).setCellValue("Analista");
        rowhead.createCell(2).setCellValue("data");
        rowhead.createCell(3).setCellValue("piloto");
        rowhead.createCell(4).setCellValue("sistema");
        rowhead.createCell(5).setCellValue("origem");
        rowhead.createCell(6).setCellValue("resolvidoN1");
        rowhead.createCell(7).setCellValue("redirecionado Para");
        rowhead.createCell(8 ).setCellValue("Resolução Final");
      
        String SQL = "SELECT * FROM chamado";
		PreparedStatement ps = connection.prepareStatement(SQL);
		ResultSet rs = (ResultSet) ps.executeQuery();
		
		int i =0;
		
		while(rs.next()){
			HSSFRow row =   sheet.createRow(i);
			row.createCell(0).setCellValue(rs.getString("numChamado"));
	        row.createCell(1).setCellValue(rs.getString("nomeAnalista"));
	        row.createCell(2).setCellValue(rs.getString("data"));
	        row.createCell(3).setCellValue(rs.getString("piloto"));
	        row.createCell(4).setCellValue(rs.getString("sistema"));
	        row.createCell(5).setCellValue(rs.getString("origem"));
	        row.createCell(6).setCellValue(rs.getString("resolvidoN1"));
	        row.createCell(7).setCellValue(rs.getString("redirecionadoPara"));
	        row.createCell(8 ).setCellValue(rs.getString("resolucaoFinal"));
		i++;
		}
        
          
        FileOutputStream fileOut =  new FileOutputStream(filename);
        workbook.write(fileOut);
        fileOut.close();
        System.out.println("Seu arquivo excel foi gerado!");
		
		
	} catch (Exception e) {
		throw new RuntimeException ("Falha", e);
	}

}}

Gostaria que o arquivo que é gerado por esta classe, estivesse disponível para download na pagina JSP, Somebody Help-me , Thks

Boa Noite Pessoal, consegui colando o arquivo POI .jar dentro da pasta lib no eclipse , pois adicionando na biblioteca “Java Build Path” estava gerando diversos erros , segue abaixo pagina de teste caso alguém tenha a mesma dúvida.

<%@page import=“com.sun.org.apache.xerces.internal.util.URI”%>
<%@page import=“java.lang.ProcessBuilder.Redirect”%>
<%@ page import=“java.util.List” %>
<%@ page import=“java.sql.Connection” %>
<%@ page import=“br.com.dao." %>
<%@ page import="br.com.bean.
” %>
<%@ page import=“br.com.util." %>
<%@page import="java.sql.
”%>
<%@page import=“java.io.*”%>
<%@page import=“java.sql.PreparedStatement”%>

<%@page import=“java.sql.Connection”%>
<%@page import=“org.apache.poi.hssf.usermodel.HSSFSheet”%>

<%@page import=“org.apache.poi.hssf.usermodel.HSSFWorkbook”%>
<%@page import=“org.apache.poi.hssf.usermodel.HSSFRow”%>
<%@page import=“org.apache.poi.hssf.usermodel.HSSFCell”%>
<%@page import=“org.apache.poi.hssf.usermodel.HSSFCell”%>
<%@page import=“br.com.ConnectionFactory” %>
<%@page import=“br.com.dao.JDBCChamadoDAO”%>
<%@include file=“httpservletrequest.jsp” %>
<%@ page import=“java.io.,javax.servlet.,javax.servlet.http."%>
<%@page contentType=“text/html; charset=utf-8” language=“java” import="java.sql.
” errorPage="" %>
<%@include file=“cabecalho.jsp” %>
<%@include file=“menus.jsp” %>

<%
Connection connection=null;
connection = ConnectionFactory.getCoonection();

try {
String nomePlanilha = “planilhaTeste”;

HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet =  workbook.createSheet("Plan System "+nomePlanilha);  
// criando as linhas
HSSFRow rowhead =   sheet.createRow(0);
rowhead.createCell(0).setCellValue("Chamado");
rowhead.createCell(1).setCellValue("Analista");
rowhead.createCell(2).setCellValue("Data");
rowhead.createCell(3).setCellValue("Piloto");
rowhead.createCell(4).setCellValue("Sistema");
rowhead.createCell(5).setCellValue("Origem");
rowhead.createCell(6).setCellValue("ResolvidoN1");
rowhead.createCell(7).setCellValue("Redirecionado Para");
rowhead.createCell(8).setCellValue("Resolução Final");


String SQL = " SELECT * FROM chamado";
PreparedStatement ps = connection.prepareStatement(SQL);
ResultSet rs = (ResultSet) ps.executeQuery();

int i = 1;



while(rs.next()){
	HSSFRow row =   sheet.createRow(i);
	row.createCell(0).setCellValue(rs.getString("numChamado"));
    row.createCell(1).setCellValue(rs.getString("nomeAnalista"));
    row.createCell(2).setCellValue(rs.getString("data"));
    row.createCell(3).setCellValue(rs.getString("piloto"));
    row.createCell(4).setCellValue(rs.getString("sistema"));
    row.createCell(5).setCellValue(rs.getString("origem"));
    row.createCell(6).setCellValue(rs.getString("resolvidoN1"));
    row.createCell(7).setCellValue(rs.getString("redirecionadoPara"));
    row.createCell(8).setCellValue(rs.getString("resolucaoFinal"));
i++;
}


Date dataDeHoje = new Date();
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");

String dataAtual = df.format(dataDeHoje);

ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
workbook.write(outByteStream);
byte [] outArray = outByteStream.toByteArray();

response.setContentType(“application/octet-stream”);
response.setContentLength(outArray.length);
response.setHeader(“Expires:”, “0”); // eliminates browser caching
response.setHeader(“Content-Disposition”, “attachment; filename=planilha”+dataAtual+".xls");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
outStream.close();

} catch (Exception e) {

throw new RuntimeException (e);

}

%>

<%@include file=“rodape.jsp”%>