IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Afficher des images dans un navigateur.


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Afficher des images dans un navigateur.
    Bonjour,

    Tout d'abord, je suis encore débutant en programmation et notamment en java. Je vous prie donc par avance d'excuser mes imprécisions à venir.

    je suis en train de développer une Appli Web (en Jsp) qui permet à l'utilisateur de choisir une image dans une liste et qui la lui affiche dans son navigateur.
    Les images que je stocke sont des TIF, je les convertis donc d'abord en JPG, les enregistre sur mon serveur puis les affiche dans le navigateur.

    Mon problème est que je n'ai pas une place infinie pour stocker les images et que je dois donc effacer mes JPG après utilisation.
    Pour l'instant, je n'arrive pas à trouver meilleure solution que de balayer toutes mes images et d'effacer les .JPG lorsque l'utilisateur passe sur ma page d'accueil.
    Commençant à faire des petits tests de charge, je me suis simulé une petite base d'image TIF qui ne représente même pas 5 % du volume que j'atteindrai en régime courant. Et avec ce volume, la page d'accueil met 15 secondes à s'afficher, le temps que la recherche et l'effacement des .JPG se fasse ! Autant dire que mon appli est inutilisable en l'état.

    Cherchant une nouvelle solution, je me demandais s'il n'était pas possible d'afficher dans le navigateur des images sans les recopier sur mon serveur ?
    Peut-on afficher dans un navigateur des images qui ne sont pas copiés sur un support physique ?

    Je vous remercie par avance des solutions / idées que vous pourrez m'apporter.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben oui, suffit d'écrire une servlet qui fait la transformation TIF -> JPG au vol et au lieu d'écrire sur un fileOutputStream, tu écris sur le response.getOutputStream(), c'est tout.

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    je réussis bien à écrire directement dans le response.getOutputStream mais je dois afficher d'autres éléments HTML dans ma servlet (un menu, du texte ...). Or il y a un conflit entre le getWriter() et getOutputStream().
    J'ai lu qq part que si je veux pouvoir envoyer à la fois des bytes (via le getOutputStream()) et des caractères (via println sur le PrintWriter), il faut que j'envoie des bytes et que je gère à la mano les caractères !
    C'est bien ça ?

    Je pense que vu mon niveau, je vais peut-être m'orienter vers une solution plus simple : un batch qui nettoie les .JPG que l'on lancera tous les soirs.

    en tous cas, merci pour les éléments de réponse.

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    Il a un problème de compréhension. Tu auras une servlet TIFF->JPG responsable de cette conversion et elle ne sera appelée que pour les ressources d'image TIFF. Une autre servlet qui émettra ton code HTML.
    Bien le bonjour chez vous
    Jowo

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Pour faire simple, ta balise <img> ressemblera à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="/url/de/la/servletImage?path=le chemin physique"/>
    Le reste n'est pas changé...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Impeccable, ça marche !
    merci beaucoup !

    Pour info, je me suis heurté à 2 problèmes lors de l'appel à la Servlet qui fait la conversion :
    1- Pour faire mon mapping de Servlet dans mon web.xml, impossible de lui faire lire un url-pattern de type : /Servlet/ConvertTifJpgServlet. Je n'entrais jamais dans ma Servlet.
    En revanche, ça passe en mettant un url-pattern de type : *.ConvertTifJpgServlet

    2- Pour faire passer le chemin de mon TIF en paramètre, j'ai été obligé de la passer en paramètre de session.

    merci encore.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Pour le mapping de la servlet, je ne vois pas trop l'intérêt de mettre "/servlet/" devant le nom logique mappé par les pages, un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet-mapping>
       <servlet-name>convertTiff2Jpeg</servlet-name>
       <url-pattern>/convertTiff2Jpeg</url-pattern>
    </servlet-mapping>
    Pour le problème du chemin, il faut utiliser un outil comme org.apache.commons.lang.StringEscapeUtils
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SVG] Affiché des images dans un rectangle sous firefox
    Par Spiderben dans le forum Firefox
    Réponses: 0
    Dernier message: 31/07/2007, 22h45
  2. Comment afficher des images dans crystalreport
    Par rddev dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/05/2007, 02h44
  3. afficher des images dans un mail
    Par boss_gama dans le forum ASP
    Réponses: 9
    Dernier message: 12/09/2006, 17h56
  4. Réponses: 2
    Dernier message: 08/05/2006, 10h03
  5. [C#] Afficher des images dans un datagrid
    Par mbibim63 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/05/2005, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo