Hola, lo estoy intentando pero de momento no me llega al servlet, ya que estoy haciendo devug y no me pasa por ahí, y no sé por que.
En el web.xml he puesto:
Código:
<servlet>
<servlet-name>OperacionesDiariasServlet</servlet-name>
<servlet-class>es.indra.aodb.informes.web.servlet.OperacionesDiariasServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OperacionesDiariasServlet</servlet-name>
<url-pattern>/operacionesDiarias.servlet</url-pattern>
</servlet-mapping>
El servlet es el siguiente:
Código:
package es.indra.aodb.informes.web.servlet;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;
public class OperacionesDiariasServlet extends HttpServlet
{
private static final long serialVersionUID = 7154490521050615751L;
private Log logger = LogFactory.getLog(this.getClass());
private static final String TITULO_INFORME = "tituloInforme";
private static final String COMPANIA = "compania";
private static final String NUMERO_VUELO = "numeroVuelo";
private static final String FECHA_PROGRAMADA = "fechaProgramada";
private static final String ESTADO_ACTUAL = "estadoActual";
private static final String TIPO_VUELO = "tipoVuelo";
private static final String TIPO_AERONAVE = "tipoAeronave";
private static final String NUMERO_ASIENTOS = "numeroAsientos";
private static final String NUMERO_PASAJEROS = "numeroPasajeros";
private static final String OCUPACION = "ocupacion";
private static final String REPORT_DATE_STRING = "reportDateString";
private Collection<String> errorsList = new ArrayList<String>();
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Connection connection = null;
Properties properties = new Properties();
String url = "";
String user = "";
String password = "";
try
{
properties.load (this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
//properties.getClass().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportProperties/Report.properties"));
url = properties.getProperty("urlJasperReport");
user = properties.getProperty("userJasperReport");
password = properties.getProperty("passwordJasperReport");
}
catch (FileNotFoundException e2)
{
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (IOException e2)
{
// TODO Auto-generated catch block
e2.printStackTrace();
}
try
{
connection = DriverManager.getConnection(url, user, password);
}
catch (SQLException e)
{
logger.debug("Error al conectar con DS de informes: " + e.getMessage());
errorsList.add("Error al conectar con DS de informes: " + e.getMessage());
e.printStackTrace();
}
JasperPrint jasperPrint = null;
//String filename = "/es/indra/aodb/informes/web/informes/etc/ListadoOperacionesDiarias.jasper"; segun internet
JasperReport listadoDiarioOperacionesJasperReport = null;
String tituloInforme = request.getParameter(TITULO_INFORME);
String compania = request.getParameter(COMPANIA);
String numeroVuelo = request.getParameter(NUMERO_VUELO);
String fechaProgramada = request.getParameter(FECHA_PROGRAMADA);
String estadoActual = request.getParameter(ESTADO_ACTUAL);
String tipoVuelo = request.getParameter(TIPO_VUELO);
String tipoAeronave = request.getParameter(TIPO_AERONAVE);
String numeroAsientos = request.getParameter(NUMERO_ASIENTOS);
String numeroPasajeros = request.getParameter(NUMERO_PASAJEROS);
String ocupacion = request.getParameter(OCUPACION);
HashMap parameters = new HashMap();
parameters.put("tituloInforme", tituloInforme);
parameters.put("compania", compania);
parameters.put("numeroVuelo", numeroVuelo);
parameters.put("fechaProgramada", fechaProgramada);
parameters.put("estadoActual", estadoActual);
parameters.put("tipoVuelo", tipoVuelo);
parameters.put("tipoAeronave", tipoAeronave);
parameters.put("numeroAsientos", numeroAsientos);
parameters.put("numeroPasajeros", numeroPasajeros);
parameters.put("ocupacion", ocupacion);
SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String reportDateString = request.getParameter(REPORT_DATE_STRING);
try
{
Date fechaInformeDesde = formatoFecha.parse(reportDateString + " 00:00:00");
Date fechaInformeHasta = formatoFecha.parse(reportDateString + " 23:59:59");
parameters.put("fechaInformeDesde", fechaInformeDesde);
parameters.put("fechaInformeHasta", fechaInformeHasta);
}
catch (ParseException e) {
logger.error("No se han transformado bien las fechas desde y hasta de informe");
errorsList.add("No se han transformado bien las fechas desde y hasta de informe");
e.printStackTrace();
}
try
{
//jasperPrint = JasperFillManager.fillReport(filename, parameters, connection); segun internet
listadoDiarioOperacionesJasperReport = (JasperReport) JRLoader.loadObject(this.getClass().getClassLoader().getResourceAsStream("es/indra/aodb/informes/web/action/informes/reportsJasper/ListadoOperacionesDiarias.jasper"));
jasperPrint = JasperFillManager.fillReport(listadoDiarioOperacionesJasperReport, parameters, connection);
if (jasperPrint != null)
{
logger.debug("Se va a mostrar el informe");
//montar informe en JasperViewer y mostrar en el modulo de informes
JRViewer viewer = new JRViewer(jasperPrint);
logger.debug("Informe mostrado");
logger.debug("informe descargado");
}
else
{
logger.error("No se ha generado el informe correctamente");
errorsList.add("No se ha generado el informe correctamente");
}
}
catch (JRException e1)
{
logger.debug(e1);
errorsList.add(e1.getMessage());
e1.printStackTrace();
}
}
public Collection<String> getErrorsList() {
return errorsList;
}
public void setErrorsList(Collection<String> errorsList) {
this.errorsList = errorsList;
}
}
y en la jsp le llamo de la siguiente manera:
Código:
...
jQuery.ajax({
type: 'GET',
cache: false,
url: '/operacionesDiarias.servlet?reportDateString='+
fechaAComprobar+'&typeFlightSelected='+operacionSeleccionada + nombresParametros,
dataType: 'html',
success: function (html, textstatus) {
alert(html);
$('#informe').replaceWith('<div id="informe">\n' + html + '</div>');
},
error: function (xhr, textEstatus, errorThrown) {//habra que cambiarlo, al ser html hay que hacer otra jsp de errores
alert('xhr'+xhr + ' textEstatus'+ textEstatus + 'error'+errorThrown);
}
});
...
pero no llega al servlet. La dirección es correcta, ¿no es verdad? Es la que le he puesto en el mapping del web.xml. Entonces, ¿porqué no llega?
Muchas gracias, un saludo