Enregistrement et ouverture d'un fichier dans application JEE
salut,
j'ai développer une application JEE et je travail avec struts2
je travail avec serveur jboss
j'arrive à générer un rapport pdf à travers jasperreport
le code est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
String url = "jdbc:mysql://localhost/Nom_Base";
String login = "root";
String password = "root";
Connection connection = null;
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);
connection = (Connection) DriverManager.getConnection(url, login, password);
JasperDesign jasperDesign = JRXmlLoader.load("C://Report/test.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
// - Paramètres utilisés dans le rapport
Map parameters = new HashMap<String, String>();
parameters.put("titre", "Listing les ");
// - "remplissage" du rapport pour pouvoir ensuite l'exporter au format qu'on veut
// (en pdf, en xls, en html, en jpeg ... on a de quoi s'amuser)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
// creation du fichier .PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Report\\test.pdf"); |
comme vous voyer le fichier test.jrxml se trouve dans mon disque dur (C:\Report )
et le fichier générer d’après mon code doit être placer dans le même répertoire
actuellement j'ai créer un dossier nommé : Reporting dans WebContent de mon application JEE et j'ai placer le fichier test.jrxml dans ce dossier
donc le but est comment accéder à ce fichier dans le code de génération de rapport pdf
ainsi je veux générer le fichier test.pdf dans le même dossier ( Reporting qui est sous WebContent)
j'essaye avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
public class GeneratePDF extends ActionSupport implements ServletRequestAware,ServletResponseAware{
private static final long serialVersionUID = 1L;
private HttpServletResponse response;
private HttpServletRequest reques;
// - Paramètres de connexion à la base de données
String url = "jdbc:mysql://localhost/name_base";
String login = "root";
String password = "root";
Connection connection = null;
public String generer() throws JRException, SQLException
{
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);
connection = (Connection) DriverManager.getConnection(url, login, password);
String filePath = reques.getSession().getServletContext().getRealPath("/Reporting ");
File fileNew = new File(filePath,"test.jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(fileNew );
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
// - Paramètres utilisés dans le rapport
Map parameters = new HashMap<String, String>();
parameters.put("titre", "Listing les ");
// - "remplissage" du rapport pour pouvoir ensuite l'exporter au format qu'on veut
// (en pdf, en xls, en html, en jpeg ... on a de quoi s'amuser)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
// creation du fichier .PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Report\\test.pdf");
return "success";
}
public void setServletRequest(HttpServletRequest request){
this.reques = request;
}
public HttpServletRequest getServletRequest(){
return reques;
}
public void setServletResponse(HttpServletResponse response){
this.response = response;
}
public HttpServletResponse getServletResponse(){
return response;
}
} |
le problème lors de l’exécution de l'application est :
Code:
1 2 3
| 22:48:30,407 ERROR [Jsr168Dispatcher] Could not execute action
java.lang.NullPointerException
at com.test.GeneratePDF.generer(GeneratePDF.java:56) |
la ligne 56 est :
Code:
String filePath = reques.getSession().getServletContext().getRealPath("/Reporting ");
donc il n'arrive pas à acceder au dossier Reporting qui est sous WebConext dans mon application JEE