Bonjour,
je développe une application pour une bibliothèque en struts.
Sur chacune de mes pages JSP, je vérifie si ma session est toujours valable en regardant si la variable repésentant l'utilisateur en cours est bien initialisée, si ce n'est pas le cas, je redirige l'utilisateur vers la page de connexion.
Je précise que j'ai définie une durée de session de 30 minutes dans mon web.xml.
Le site internet permet à un utilisateur de commander des ouvrages à la bibliothèque. L'utilisateur peut aussi consulter les différentes commandes qu'il a effectués (en utilisant des flèches genre lecteur de cd).
Lorsque l'utilisateur navigue à l'aide des flèches sur les informations de ces différentes commandes , il peut aussi soit imprimer le détail de la commande soit l'exporter sous forme de fichier texte pour l'importer dans un logiciel de gestion bibliographique.
Une fois que le fichier est exporté, je réduis la fenètre du navigateur pour passer sur le logiciel de gestion bibliographique et importer le fichier texte. Une fois cela fait je repasse sur la page jsp pour continuer à naviguer sur mes commandes et ma session est soudain invalidée car je suis redirigé sur ma page de connexion.
J'ai donc effacé le code responsable de l'exportation et cela a fonctionné, j'ai testé avec le code de l'exportation mais sans réduire le fenètre et cela fonctionne aussi.
voici le code de l'action chargé de l'exportation :
Si quelqu'un a déjà eu ce genre de problème, cela m'aiderait au moins à comprendre ce qui se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 URI lURI = new URI(ExporterAction.class.getResource(mContextManager.getExportRelativePath()).toExternalForm()); File lFile = new File(lURI); FileInputStream lFileInputStream = new FileInputStream(lFile); OutputStream lOutputStream = aResponse.getOutputStream(); aResponse.setContentType("text"); aResponse.setHeader("Content-Disposition", "attachment; filename=\"" + "export.txt" + "\";"); aResponse.setContentLength(lFileInputStream.available()); int lIBufSize = lFileInputStream.available(); byte lInBuf[] = new byte[lIBufSize]; int lINumRead; while ((lINumRead = lFileInputStream.read(lInBuf, 0, lIBufSize)) > 0) { lOutputStream.write(lInBuf, 0, lINumRead); } lFileInputStream.close(); lOutputStream.close(); return aMapping.findForward("demande");
Merci d'avance
Partager