Servlet-utiliser les plugins de l'explorateur pr lire des pdf, doc,...

Servlet-utiliser les plugins de l'explorateur pr lire des pdf, doc,... - Java - Programmation

Marsh Posté le 30-10-2002 à 10:10:50    

Heu, alors voila. Ms serlvet permet de consulter des fichiers qui sont sur le serveur.
Au départ le client choisi le fichier qu'il veut consulter.
 
Si le client veut visualiser une image, ça roule.
Voila comment je fais :
 
*Je construit et attache à la session un objet JPage qui contient le chemin du fichier à afficher ainsi que son type MIME (et tout plein d'autes trucs)
 
*Ma servlet fait appel à une jsp (page.jsp)
qui contient la ligne suivante :

<IMG src='<%=request.getContextPath()%>image.jsp'>


 
*Dans cette autre jsp qui est appelée, je récupère l'objet JPage depuis la session, sous la référence myJPage, je récupère le type MIME du fichier pointé par cette instance, je fais donc ceci:

Code :
  1. response.setContentType(myJPage.getOutFormatMIMEType ());

Cette classe JPage  contient également une méthode "write (OutputStream _out)" qui me permet d'envoyer directement au navigateur, des données. J'appelle donc cette méthode write, de cette manière :

Code :
  1. // écriture de l'image sur la sortie
  2.         ServletOutputStream binaryOutputStream = response.getOutputStream();
  3.         myJPage.write (binaryOutputStream);


 
Donc, ceci marche nickel avec des fichiers image.
Par contre, avec des pdf, doc,  ou autre, ça marche pas. c normal ? pourquoi ? ...Une solution peut être ? :D
Merci...


Message édité par El_gringo le 30-10-2002 à 10:13:52
Reply

Marsh Posté le 30-10-2002 à 10:10:50   

Reply

Marsh Posté le 30-10-2002 à 10:37:20    

le mime type est correct pour ces fichiers? Et qd tu veux dire que ca marche pas ca veut dire quoi ? Page blanche?
 
y a des logs ?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 10:38:52    

Pas page blanche. Comme tu vois, ma 2e JSP est mise dans un tag HTML de type IMG
Donc ça m'affiche le petit truc d'IE pour une image qui peut pas s'afficher...

Reply

Marsh Posté le 30-10-2002 à 10:42:46    

El_Gringo a écrit a écrit :

Pas page blanche. Comme tu vois, ma 2e JSP est mise dans un tag HTML de type IMG
Donc ça m'affiche le petit truc d'IE pour une image qui peut pas s'afficher...




 
Ca semble logique tout ça... Tu veux que les docs se téléchargent tout seul ?

Reply

Marsh Posté le 30-10-2002 à 10:44:21    

Dans les logs de Tomcat rien
Mais je vais activer les logs de ma webapp en fait...
2 secondes.

Reply

Marsh Posté le 30-10-2002 à 10:47:11    

El_Gringo a écrit a écrit :

Pas page blanche. Comme tu vois, ma 2e JSP est mise dans un tag HTML de type IMG
Donc ça m'affiche le petit truc d'IE pour une image qui peut pas s'afficher...




 
 :heink:  :heink:  :heink:  
 
mais enfin tu mets un IMG SRC c'est normal qu'il cherche une image! Qu'est ce que tu nous fais là?  :??:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 10:48:54    

ben pourquoi tu le mets dans un tag img si c'est un document PDF  :??:   :pt1cable:  
 
met un lien directement vers une servlet qui te balancera le fichier ...

Reply

Marsh Posté le 30-10-2002 à 10:48:55    

Pour ton truc, à mon avis, t'as pas trop le choix :
 
1. Soit tu ouvres un pop up qui appelle ton 2ème JSP, et donc ton doc s'ouvrira dans ce pop up et il ne se fermera pas automatiquement.
 
2. Soit tu utilises des frames, ou mieux un IFRAME qui pointe vers ton 2ème JSP.
 
T'as regardé ce que la balise <OBJECT> te permet de faire ?

Reply

Marsh Posté le 30-10-2002 à 10:51:05    

oui mais pkoi ne pas balancer le document directement ?

Reply

Marsh Posté le 30-10-2002 à 10:57:01    

DarkLord a écrit a écrit :

 
 
 :heink:  :heink:  :heink:  
 
mais enfin tu mets un IMG SRC c'est normal qu'il cherche une image! Qu'est ce que tu nous fais là?  :??:  




 
c une bidouille que j'ai lue, et qui m'arrange assez. Ma webapp devrait pouvoir afficher indifférement, des images ou des fichiers natifs (doc, pdf, ...).
J'ai vu dans une autre web app (pas faite en Java, ms en C++) qu'il utilise cette méthode...

Reply

Marsh Posté le 30-10-2002 à 10:57:01   

Reply

Marsh Posté le 30-10-2002 à 10:58:00    

ouais bin oublie ce que tu as vu parce que ce que tu fais là est totalement incorrect et hors normes.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 11:01:59    

_Mac_ a écrit a écrit :

Pour ton truc, à mon avis, t'as pas trop le choix :
 
1. Soit tu ouvres un pop up qui appelle ton 2ème JSP, et donc ton doc s'ouvrira dans ce pop up et il ne se fermera pas automatiquement.
 
2. Soit tu utilises des frames, ou mieux un IFRAME qui pointe vers ton 2ème JSP.
 
T'as regardé ce que la balise <OBJECT> te permet de faire ?




 
<Object> ça pourrait être bien pratique, mais ça nécessite l'url du fichier. Ds mon cas, ce fichier n'est pas accessible par URL.
Mais en fait... j'vais tenter un piti truc...

Reply

Marsh Posté le 30-10-2002 à 11:02:41    

benou a écrit a écrit :

oui mais pkoi ne pas balancer le document directement ?




 
J'aurai aimé rester générique, que ça soit une image ou un document que j'ai à afficher...

Reply

Marsh Posté le 30-10-2002 à 11:03:46    

El_Gringo a écrit a écrit :

 
 
<Object> ça pourrait être bien pratique, mais ça nécessite l'url du fichier. Ds mon cas, ce fichier n'est pas accessible par URL.
Mais en fait... j'vais tenter un piti truc...




 
Je comprends pas : l'attribut src de la balise <IMG> contient bien une URL, non ? C'est pareil !

Reply

Marsh Posté le 30-10-2002 à 11:06:45    

_Mac_ a écrit a écrit :

 
 
Je comprends pas : l'attribut src de la balise <IMG> contient bien une URL, non ? C'est pareil !




 
ouais ouais, t'as raison. c ce que je suis en trani d'essayer...

Reply

Marsh Posté le 30-10-2002 à 11:48:24    

Bon, ben en fait, vs aviez raison, je me prenais la tête pour rien.
Je balance directement le contenu du fichier sur la sortie dans une JSP, ça marche sans pb.
Merci...

Reply

Marsh Posté le 30-10-2002 à 11:52:01    

El_Gringo a écrit a écrit :

Bon, ben en fait, vs aviez raison, je me prenais la tête pour rien.
Je balance directement le contenu du fichier sur la sortie dans une JSP, ça marche sans pb.
Merci...




 
sans blague  :heink:  
 
 :lol:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 11:57:08    

DarkLord a écrit a écrit :

 
 
sans blague  :heink:  
 
 :lol:  




 
Ms en fait g juste un petit pb encore :
ça marche, ms dans les logs de Tomcat, y a une exception :

java.lang.IllegalStateException: getOutputStream() has already been called for this response


 
C pas tellement étonnant, vu que dans ma JSP, je fais

Code :
  1. // écriture de l'image sur la sortie
  2.         ServletOutputStream binaryOutputStream = response.getOutputStream();
  3.         pageToPrint.Write (binaryOutputStream);


 
..alors que dans une JSP, "out" existant par défaut, c'est LA sortie de la JSP.
Mais il me semble que je peux pas écrire les données de mon PDF (ou autre) dans l'instance "out" d'un JSP, car c'est un "Writer", uniquement pour du texte.
Comment je peux faire pour obtenir l'OutputStream de ma JSP sans avoir cette exception ?

Reply

Marsh Posté le 30-10-2002 à 12:08:03    

bin tu dois pas initier l'écriture du pdf depuis ta jsp mais dans la servlet ...
 
Une JSP c'est fait pour afficher un document HTML. Si tu veux que le résultat d'une requete ait pour but de renvoyer un doc pdf au client tu ne dois pas "de facto" utiliser une JSP.
 
Mauvaise utilisation de l'outil ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 12:16:17    

DarkLord a écrit a écrit :

bin tu dois pas initier l'écriture du pdf depuis ta jsp mais dans la servlet ...
 
Une JSP c'est fait pour afficher un document HTML. Si tu veux que le résultat d'une requete ait pour but de renvoyer un doc pdf au client tu ne dois pas "de facto" utiliser une JSP.
 
Mauvaise utilisation de l'outil ...




 
Ha...ça m'arrange pas du tout ça !
On peut faire un Forward à partir d'une servlet sur une servlet ?

Reply

Marsh Posté le 30-10-2002 à 12:20:28    

El_Gringo a écrit a écrit :

 
 
Ha...ça m'arrange pas du tout ça !
On peut faire un Forward à partir d'une servlet sur une servlet ?




 
bin évidemment :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 30-10-2002 à 14:17:13    

DarkLord a écrit a écrit :

bin tu dois pas initier l'écriture du pdf depuis ta jsp mais dans la servlet ...
Une JSP c'est fait pour afficher un document HTML. Si tu veux que le résultat d'une requete ait pour but de renvoyer un doc pdf au client tu ne dois pas "de facto" utiliser une JSP.
Mauvaise utilisation de l'outil ...




ouais !
 
pour compléter :  
 
la méthode getWriter de Response est automatiquement appelée à l'eexecution d'une JSP. C'est pour ca qu'il gueule quand tu essaye d'appeler un OutputStream car seul 1 des 2 méthodes (getWriter ou getOutputStream) peut être appelée.
 
C'est d'ailleur aussi pour ca que tu ne peux pas faire de dispatch à l'intérieur d'une JSP car la méthode getDispatcher ne peut être appelée après l'appel à une de ces deux méthodes.
 
 
et puis en plus, les JSP c'est fait opur formater du text. Donc comme toi tu veux pouvoir renvoyer n'imoprte quoi, il faut que ce soit une servlet qui gère l'envoie du fichier et qui donnera éventuellement la main à une jsp dans le cas d'un fichier text à formater.

Reply

Marsh Posté le 30-10-2002 à 14:18:33    

El_Gringo a écrit ca (entre autre) a écrit :

 
ça marche, ms dans les logs de Tomcat, y a une exception



je suis déjà vachement étonné que ca marche ...  :??:

Reply

Marsh Posté le 30-10-2002 à 14:20:51    

benou a écrit a écrit :

 
je suis déjà vachement étonné que ca marche ...  :??:  




 
...et pourtant !
La servlet pr remplacer cette JSP mal utilisée, c une servlet HTTP, non ?

Reply

Marsh Posté le 30-10-2002 à 14:25:27    

El_Gringo a écrit a écrit :

 
...et pourtant !
La servlet pr remplacer cette JSP mal utilisée, c une servlet HTTP, non ?




bha oui évidement, par quel protocole veux tu y accéder sinon ?

Reply

Marsh Posté le 30-10-2002 à 15:46:00    

benou a écrit a écrit :

 
bha oui évidement, par quel protocole veux tu y accéder sinon ?




 
Je crois que ct pas la question benou....
Moi , g compris qu'il voulait savoir si il devait deriver sa servlet de HttpServlet ou de GenericServlet. En l'occurence, GenericServlet conviendrait aussi bien que l'autre....


---------------
Eos 20d(kit) + 70-200 F4L + 50 F1.4 + 420 EX Powered®
Reply

Marsh Posté le 30-10-2002 à 15:55:24    

Meliok a écrit a écrit :

 
 
Je crois que ct pas la question benou....
Moi , g compris qu'il voulait savoir si il devait deriver sa servlet de HttpServlet ou de GenericServlet. En l'occurence, GenericServlet conviendrait aussi bien que l'autre....




 
En effet, c'était bien ça la question.
Du coup j'étend HttpServlet...
Bon bah voila, j'ai fait une servlet à la place de cette JSP, et c'est tout nickel, c génial.
Maintenant, ma web-app est capable d'afficher des fichiers word, pdf, xls, ppt, mpeg, mov, toutes sortes d'images. c génial !
Merci à ceux qui m'ont aidé. :hello:


Message édité par El_gringo le 30-10-2002 à 15:55:53
Reply

Marsh Posté le 30-10-2002 à 16:05:22    

Meliok a écrit a écrit :

 
Je crois que ct pas la question benou....
Moi , g compris qu'il voulait savoir si il devait deriver sa servlet de HttpServlet ou de GenericServlet. En l'occurence, GenericServlet conviendrait aussi bien que l'autre....




:jap: ok j'avais pas capté.
 
mais si je me trompe pas, GenericServlet implémente Servlet et pas HttpServlet => ma remarque reste la même
 
et puis un petit coup de javadoc :  

Citation :

Defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend HttpServlet instead.

Reply

Marsh Posté le 30-10-2002 à 16:06:56    

El_Gringo a écrit a écrit :

 
Maintenant, ma web-app est capable d'afficher des fichiers word, pdf, xls, ppt, mpeg, mov, toutes sortes d'images. c génial !



cool ! :)
 
j'ai juste une ptite question : pkoi t'as pas mit des accès directs à tes fichiers : la plupart des moteurs de servlet (genre tomcat) font ca tout seul ...


Message édité par benou le 30-10-2002 à 16:07:06
Reply

Marsh Posté le 30-10-2002 à 17:01:57    

benou a écrit a écrit :

 
cool ! :)
 
j'ai juste une ptite question : pkoi t'as pas mit des accès directs à tes fichiers : la plupart des moteurs de servlet (genre tomcat) font ca tout seul ...




 
2 raisons :  
 
-En fait à la base mon truc, c'est surtout pour afficher des images. J'utilise JAI, et je permet à l'utilisateur de redimentionner une image, la faire pivoter, ...
Sans changer les données du fichier, ni écrire de fichier temporaire. Tout se fait en mémoire, c pratique.
-Pour une question de sécurité, le répertoire de stockage des images ne doit pas être accessible par URL.

Reply

Marsh Posté le 30-10-2002 à 17:09:33    

ko, c'était juste pour être sur que tu réinventais pas la roue :)

Reply

Marsh Posté le 30-10-2002 à 17:15:16    

benou a écrit a écrit :

ko, c'était juste pour être sur que tu réinventais pas la roue :)




 
Merci de t'en soucier.
 
J'ai bien pensé à mettre simplement l'url de mes fichiers avant...
Ms j'aime bien la méthode que j'utilise, j'trouve ça classe  :sol:

Reply

Marsh Posté le 31-10-2002 à 10:52:22    

El_Gringo a écrit a écrit :

 
 j'trouve ça classe  :sol:  




 
 :lol: le jeu de mot à deux balles  :lol:  
 
 :ange:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed