Foros del Web » Programación para mayores de 30 ;) » Java »

Llamar a un servlet que genera pdf

Estas en el tema de Llamar a un servlet que genera pdf en el foro de Java en Foros del Web. Hola quiero conseguir desde mi aplicacion que me genere un documento pdf utilizando ireport. El caso es que creo que el tema de como hacer ...
  #1 (permalink)  
Antiguo 07/12/2006, 04:53
 
Fecha de Ingreso: diciembre-2006
Mensajes: 31
Antigüedad: 17 años, 4 meses
Puntos: 0
Llamar a un servlet que genera pdf

Hola quiero conseguir desde mi aplicacion que me genere un documento pdf utilizando ireport.
El caso es que creo que el tema de como hacer el pdf lo tengo solucionado o eso creo pero lo que me falla es como llamar al servet cuando pulso el boton

Yo lo tendo asi en mi documento jsp:

<h:commandButton value="Generar pdf" type=submit/>

aparte tengo puesto la direccion del servlet el el localhost en un form

<form action=localhost/servlet/topdf" method="POST">



¿es asi? Por que cuando pulso el boton no hace nada ¿¿Como seria????

public class toPdf extends HttpServlet {

private static final String CONTENT_TYPE = "application/pdf";


// Initialize global variables
public void init() throws ServletException
{

}

// Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
createReport(request, response);
}

// Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request, response);
}

public void createReport(HttpServletRequest request, HttpServletResponse response)
{
java.sql.Connection conn = null;

try
{



String reporteJasper ="C:\\Archivos de programa\\JasperSoft\\iReport-1.2.8\\reporte_user.jasper" ;


UserBean user = new UserBean();

user.CogerDatos();

Map parameters = new HashMap();

parameters.put("nombre",request.getParameter("NOMB RE"));
parameters.put("password",request.getParameter("PA SS"));
parameters.put("pais",request.getParameter("PAIS") );
parameters.put("aboutyou",request.getParameter("AB OUTYOU"));



/*
* Tambien podria ir poner una conexion nula,
* ya que no saco datos de ninguna conexion
*
* Connection conexion = null;
*/


byte[] bytes = JasperRunManager.runReportToPdf(reporteJasper, parameters, conn);

// JasperPrint jp = JasperFillManager.fillReport(reporteJasper,paramet ers);
/*
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
*/
ServletOutputStream outputStream = response.getOutputStream();
//response.setContentType(CONTENT_TYPE);
outputStream.write(bytes,0,bytes.length);
outputStream.flush();
outputStream.close();

/*JasperViewer jv = new JasperViewer(jp, false);

jv.setVisible(false);
*/

//JasperManager.printReportToPdfStream(jasperPrint, oS);

}
catch(Throwable e)
{
}
finally
{
try
{
if(conn != null)
{
conn.close();
}

}
catch (Throwable ex2)
{
System.out.println("*************MENSAJE ERROR = " + ex2.getMessage());
System.out.println("*************CAUSA ERROR = " + ex2.getMessage());
}

}
}
  #2 (permalink)  
Antiguo 07/12/2006, 07:03
 
Fecha de Ingreso: diciembre-2006
Mensajes: 31
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Llamar a un servlet que genera pdf

Voy a exponer mejor y mas corto lo que quiero:

Tengo hecha mi aplicacion jsp que funciona y quiero llamar desde ella una servlet que tengo hecha a parte cuando pulso un boton.

he probado tantas cosas que estoy to liado

¿como lo hago?


mucahs gracias
  #3 (permalink)  
Antiguo 07/12/2006, 11:21
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Re: Llamar a un servlet que genera pdf

en el action del formulario no le pongas localhost, solo ponle la url relativa al servlet

<form action="topdf" method="POST">

si es que tu JSP esta en la carpeta principal del proyecto
have funnnnnn
  #4 (permalink)  
Antiguo 18/12/2006, 02:42
 
Fecha de Ingreso: mayo-2006
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Llamar a un servlet que genera pdf

Con este codigo se llama al archivo jasper creado anteriormente con el Ireport y se genera el pdf.
public void nombre(HttpServletRequest request, HttpServletResponse response) throws IOException{

string sqlstr="";


try
{
InputStream in = this.getClass().getResourceAsStream("/plantillasinformes/LRTM_Informe_Receta.jasper");

//Pasamos parametros al reporte Jasper.
Map parameters = new HashMap();
sqlstr="select * from .........lo que sea";
parameters.put("sql", new String(sqlstr));
//PASAMOS UN PARAMTRO
String param="/plantillasinformes";
parameters.put("SUBREPORT_DIR", param);




byte[] bytes = JasperRunManager.runReportToPdf(in, parameters, getConnection());


response.setContentType("application/pdf");

response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();

//la siguiente linea, te obliga a descargar y le da el nombre//
response.addHeader("content-disposition","attachment; filename=RecetaIndividual.pdf");
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

}
catch (Exception e)
{
// out.println(e.getMessage());
}

}


public static Connection getConnection() throws ClassNotFoundException, SQLException {


String driver = "oracle.jdbc.driver.OracleDriver";
String connectString = "jdbc:oracle:thin:@192.168.1.204:1521:prueba4" ;
String user = "system";
String password = "psystem";
Class.forName(driver);
Connection conn = DriverManager.getConnection(connectString, user, password);

//Retornamos la conexión establecida.
return conn;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:45.