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 :

affichage dynamique et périodique d'images dans une jsp à partir d'une servlet


Sujet :

Servlets/JSP Java

  1. #21
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Points : 73
    Points
    73
    Par défaut
    re!
    je pense que j'ai compris pourquoi la page jsp n'a pas pu afficher l'image

    jeter un coup d'oeil sur ce lien http://stackoverflow.com/questions/1...et-to-jsp-page

    You can't1 return both in the same response, since you're returning different types (an HTML page of type text/html and an image of type image/jpeg, say).
    j'ai compris alors que le content type de la jsp doit etre "image/png" et non pas "text/html"

    d'ou l'entete de ma page jsp sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@page contentType="image/png" pageEncoding="UTF-8"%>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    l'appel de la jsp fonctionne nickel en local mais dans l'autre machine ne fonctionne pas

  2. #22
    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
    ton entête est fausse, ta page jsp retourne du html donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    Le problème est ailleurs...

    Pourrais-tu nous montrer le code HTML généré par ta jsp.

    Pour le rafraichissement, on va utiliser du javascript.
    Bien le bonjour chez vous
    Jowo

  3. #23
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Points : 73
    Points
    73
    Par défaut
    eh bah si c'est vraiment faux pourquoi ça marche en local
    voila le code html généré par la jsp
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     
     
     
    <META http-equiv="Refresh" content="4">
     
     
     
    <title>Conference's slides</title>
     
    </head>
     
    <body>
     
     
     
     
     
     
     
    <img src="http://localhost:8080/Slide/SlideServlet">
     
     
     
    <br>
     
    Hello ! The time is now   Tue May 18 09:36:12 GMT+01:00 2010
     
    </body>
     
    </html>
    mais toujours dans l'autre machine :
    The image “http://xxx.xxx.x.x:8080/Slide/image.jsp” cannot be displayed, because it contains errors.

  4. #24
    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
    Quel navigateur utilises-tu pour qu'il affiche ce message d'erreur?
    The image “http://xxx.xxx.x.x:8080/Slide/image.jsp” cannot be displayed, because it contains errors.
    Les navigateurs de PCs sont très souples et ont une haute tolérance aux erreurs. Par contre certains navigateurs ne tolèrent aucune erreur dans l'HTML.
    Bien le bonjour chez vous
    Jowo

  5. #25
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Points : 73
    Points
    73
    Par défaut
    la machine ou j'ai installé serveur apache tomcat est XP je test en local avec IE
    et la machine distante est ubuntu 10.04 le navigateur est Firefox mais bien sur l'important pour moi que ça fonctionne dans la webView de mon émulateur Android

  6. #26
    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
    Ton erreur provient du fait que tu déclares avec "image/png" que la réponse est une image. Mais la réponse envoyée est du code html.

    Alors dans ta page JSP, tu déclares:
    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
    23
    24
    25
    26
    27
    28
    29
    30
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Conference's slides</title>
    </head>
     
    <body>
    <img id="slider" src="/<%=request.getContextPath()%>/SlideServlet">
    <br>
     
    Hello ! The time is now   ..<!-- ton code pour la date -->..
     
          <script type="text/javascript">
              var img = document.getElementById("slider");
              if (img) {
                var srcImage = img.src;
                var fct = function() {
                    img.src = srcImage+"?_="+new Date().getTime();
                };
                setInterval(fct, 2500);
              }
          </script>
     
    </body>
     
    </html>
    Bien le bonjour chez vous
    Jowo

  7. #27
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Points : 73
    Points
    73
    Par défaut
    ça marche pas, meme y a plus d'image..
    grand merci jowo pour ton aide..
    et moi je continue la galère

  8. #28
    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
    il ne faut baisser les bras...

    Chez moi ce code fonctionne:

    extrait de web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
        <servlet>
            <servlet-name>Slider</servlet-name>
            <servlet-class>com.pfe.slide.SlideServlet</servlet-class>
        </servlet>
    ...
        <servlet-mapping>
            <servlet-name>Slider</servlet-name>
            <url-pattern>/SlideServlet/*</url-pattern>
        </servlet-mapping>
    ...
    SlideServlert.java
    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
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package com.pfe.slide;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.Closeable;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
     
    //import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     *
     * @author jowo
     */
    public class SlideServlet extends HttpServlet {
     
    	// Constants ----------------------------------------------------------------------------------
     
        private static final int DEFAULT_BUFFER_SIZE = 10240; // 10KB.
        private static final String IMG_DIRECTORY = "C:\\images";
     
     
        // Properties ---------------------------------------------------------------------------------
    	public  static File lastSlide=null ;
        // Actions ------------------------------------------------------------------------------------
     
     
      @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
        {
     
            File[] list = new File(IMG_DIRECTORY).listFiles();
     
            File inter;
     
            for( int i=(list.length-1); i>0; i--)
            {
              for( int j=0; j<i; j++)
              {
                if (list[j].lastModified()> list[j+1].lastModified())
                {
                  inter= list[j];
                  list[j]= list[j+1];
                  list[j+1]= inter;
                }
              }
            }
       	lastSlide= list[list.length-1];
     
     
     
        	// Check if file actually exists in filesystem.
     
             if (!lastSlide.exists()) {
                 response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404. !!!!!!!!
     
     
                 return;
             }
    //--------------------------------------------------------------------------------
     
             // Init servlet response.
            response.reset();
            response.setBufferSize(DEFAULT_BUFFER_SIZE);
            response.setContentType("image/png");
            response.setHeader("Content-Length", String.valueOf(lastSlide.length()));
            response.setHeader("Content-Disposition", "inline; filename=\"" + lastSlide.getName() + "\"");
     
            // Prepare streams.
            BufferedInputStream input = null;
            BufferedOutputStream output = null;
     
            try {
     
     
                // Open streams.
                input = new BufferedInputStream(new FileInputStream(lastSlide), DEFAULT_BUFFER_SIZE);
                output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
     
                // Write file contents to response.
                byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
                int length;
                while ((length = input.read(buffer)) > -1) {
                    output.write(buffer, 0, length);
                }
                output.flush();
            } finally {
                // Gently close streams.
                close(output);
                close(input);
            }
        }
     
        // Helpers (can be refactored to public utility class) ----------------------------------------
     
        private static void close(Closeable resource) {
            if (resource != null) {
                try {
                    resource.close();
                } catch (IOException e) {
                    // Do your thing with the exception. Print it, log it or mail it.
                    e.printStackTrace();
                }
            }
        }
     
     
    }
    slider.jsp
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <%-- 
        Document   : slider
        Created on : 18 mai 2010, 13:38:14
        Author     : jowo
    --%>
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Conference's slides</title>
        </head>
     
        <body>
            <img id="slider" src="<%=request.getContextPath()%>/SlideServlet" alt="spider">
            <br>
            Hello ! The time is now   <%=new java.util.Date()%>
            <script type="text/javascript">
                var img = document.getElementById("slider");
                if (img) {
                    var srcImage = img.src;
                    var fct = function() {
                        img.src = srcImage+"?_="+new Date().getTime();
                    };
                    setInterval(fct, 2500);
                }
            </script>
        </body>
    </html>
    Bien le bonjour chez vous
    Jowo

  9. #29
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Points : 73
    Points
    73
    Par défaut

    merciiiiiii ça fonctionne chez moi meme dans mon android
    j'arrive pas à réaliser
    merci jowo INFINIMENT tu es vraiment super

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant] ajouter une image dans picturebox a partir d'une listbox
    Par gindistimoo dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/05/2012, 14h40
  2. Appeler une JSP à partir d'une JSP
    Par fessebleu dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 23/02/2011, 01h07
  3. Réponses: 3
    Dernier message: 14/03/2010, 00h38
  4. Réponses: 4
    Dernier message: 03/06/2008, 18h20
  5. Réponses: 12
    Dernier message: 26/03/2008, 16h40

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