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 :

Recherche de solution pour éviter une erreur 404 sur une img


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut Recherche de solution pour éviter une erreur 404 sur une img
    Bonjour,

    Sur une page listant des documents je dois associer une image(extension).

    Lorsque j'avais un seul document je recherche la présence de l'image associée (dans un répertoire contenant les images) et si non présente je prenais celle par défaut, cela a fin d'éviter de me retrouver sans image à afficher.

    Je rencontre un autre cas de figure avec un nombre de fichiers variable sur une même page et je préférais éviter de contrôler la présence ou non de chaque image.(et éventuellement retester le même type de document,ce qui obligerait encore a rajouter un peu de code pour éviter cela).

    Une autre solution niveau css consiste à lister l'ensemble des images/icones présente, ce qui impose de devoir mettre à jour le fichier css.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="madiv">
    <img class="icondoc" src="images/extensions/blank.gif" width="52" height="52"/> Fichier 1.doc<br/>
    </div>
    la feuille de style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    div#madiv img {
     background-image: url('images/extensions/default.png');
    }
     
    div#madiv img.icondoc {
     background-image: url('images/extensions/doc.png');
    }
    Même si le titre n'est pas très parlant j'espère avoir été assez clair
    Si quelqu'un a déjà rencontré le problème et trouvé une autre solution ou une idée de solution je suis preneur.

    Merci,

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ben, c'est pas très clair...

    Je résume ce que j'ai compris :

    - tu voudrais associer une image à un type de document
    - les types de documents sont dynamiques
    - si l'image n'existe pas pour un type donné, tu affiches une image par défaut

    c'est bien ça ?

    Je vois 2 possibilités :

    - écrire une taglib pour l'affichage d'un élément de la liste
    - utiliser un filtre et utiliser le nom du fichier comme nom d'image

    Dans le 2ème cas, on se retrouverait avec une page de ce style
    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
     
    ...
    <tr>
        <td>
            <img src="/virtual/monDocument.gif"/>
        </td>
        <td>
            monDocument.gif
        </td>
    </tr>
    <tr>
        <td>
            <img src="/virtual/lettre.doc"/>
        </td>
        <td>
            lettre.doc
        </td>
    </tr>
    ...
    le filtre s'occupant de récupérer l'image associé.
    (il va de soit que le filtre sera limité aux url commançant par "/virtual/*")
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Tu as très bien compris

    Le filtre irait checker la présence ou non de l'image et renverait une image en fonction du résultat.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par link256 Voir le message
    Tu as très bien compris

    Le filtre irait checker la présence ou non de l'image et renverait une image en fonction du résultat.
    c'est cela même... comme quoi, qu'est ce qu'on comprend bien aujourd'hui
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    J'avoue si sa pouvait être tous les jours comme ça

    Une Tite dernière question pour la route, en l'occurrence ici ce sont de toutes petites images donc au niveau des perfs que ce soit en lien direct ou l'image renvoyée par le filtre il y a très peu de différence.

    Mais pour de grosse image ne serait-il pas plus intéressant de passer par un taglib qui irait tester la présence de celle-ci ?
    et qui réécrit simplement l'url source (Si j'ai bien compris la solution taglib *va -t-on se comprendre de bout en bout *)

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    On peut voir le taglib à plusieurs niveaux :

    - soit pour la ligne (auquel cas, ça ressemblerait beaucoup au filtre)
    - soit au niveau de la génération de css dans la page (balise <style...>)

    Personnellement, j'aurais une préférence pour le filtre... mais tout dépend du nombre d'éléments de la page et de la contrainte temps de réponse...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    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
    Citation Envoyé par OButterlin Voir le message
    Personnellement, j'aurais une préférence pour le filtre... mais tout dépend du nombre d'éléments de la page et de la contrainte temps de réponse...
    Vu que c'est un filtre qui donne un réponse systématiquement, je laisserais tomber l'idée du filtre. Le rôle d'un filtre n'est pas de fournir un rendu mais d'affecter le rendu ou le processing effectué par une servlet. En l'occurence, j'utiliserais donc simplement une servlet que je mapperais sur virtual/*. Sinon le reste du principe reste le même. Si les images sont grosse, j'utiliserais plutot des url comme "/virtual/docTypes/png", ca t'assurerais que si t'as 15 png sur la page, le browser ne chargera qu'une seule fois l'image (une seule url )

  8. #8
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Merci à vous 2 pour ses conseils,

    ce qui me donne un peu plus de corde à mon arc ^^

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Vu que c'est un filtre qui donne un réponse systématiquement, je laisserais tomber l'idée du filtre. Le rôle d'un filtre n'est pas de fournir un rendu mais d'affecter le rendu ou le processing effectué par une servlet. En l'occurence, j'utiliserais donc simplement une servlet que je mapperais sur virtual/*. Sinon le reste du principe reste le même. Si les images sont grosse, j'utiliserais plutot des url comme "/virtual/docTypes/png", ca t'assurerais que si t'as 15 png sur la page, le browser ne chargera qu'une seule fois l'image (une seule url )
    Le filtre peut très bien être utilisé pour ce genre de chose, on peut également mettre une url d'image faisant référence à une servlet, je ne vois pas trop pourquoi la servlet serait mieux que le filtre, dans tous les cas, dès qu'il y a une url d'image il appellera le filtre ou la servlet, où vois-tu une optimisation ?

    D'un point de vue performance, il serait préférable de gérer un bloc css "style" (en passant par un taglib par exemple) et de passer par une classe de style pour la ligne...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    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
    Parce que c'est contraire à la spécification et peut faire perdre beaucoup de temps à la personne qui fait la maintenance (mais ou elle est ce foutue servlet?). Et si on suis une telle logique, pourquoi pas tout mettre dans une valve tomcat? Ce serait même plus rapide ^^

    Citation Envoyé par specifications sun
    A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.
    Citation Envoyé par specifications sun
    A filter is an object than perform filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
    Bref, on utilisera ici une servlet pour la même raison qu'on respectera les conventions de nommage en java (lowerCamelCase pour les champs/variables locales/méthodes, UpperCamelCase pour les classes). Sa marche sans le faire, mais on le fait quand même par respect pour ceux qui passent après ^^

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Envoyé par specifications sun
    A filter is an object than perform filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
    Et pourtant, tout est dit là, on est exactement dans ce cas, on filtre l'accès à une ressource statique...

    Ceci dit, on ne va pas se prendre la tête pour si peu, les 2 méthodes fonctionnent.

    Pour ce qui est du valve, là, c'est spécifique au serveur et donc, forcément, nettement moins portable...
    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. Gérer proprement une erreur EMFILE sur une socket serveur
    Par Le Mérovingien dans le forum Réseau
    Réponses: 0
    Dernier message: 16/09/2011, 17h07
  2. Erreur 404 sur une page s'appleant elle-même
    Par BATCHOS CON TEQUILA dans le forum ASP.NET
    Réponses: 0
    Dernier message: 25/09/2008, 21h58
  3. Réponses: 1
    Dernier message: 05/04/2008, 16h13
  4. Réponses: 3
    Dernier message: 05/01/2006, 15h14
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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