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 :

Pb ouverture page jsp après download


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut Pb ouverture page jsp après download
    Bonjour,

    J'ai une page jsp qui appelle une servlet pour télécharger un fichier:
    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
     
    response.setHeader("Cache-Control", "no-cache");
    File f=new File(c:/monfichier.xml);
    response.addHeader("Content-disposition", "attachment; filename=" +f.getName());
    ServletOutputStream out = response.getOutputStream();
     
    FileInputStream in=new FileInputStream(f);
    int b;
    while ((b=in.read())!=-1)
    {
         out.write(b);
    }
    in.close();
    out.close();
     
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/MainMyApplications1.jsp?page="+numPage);
     rd.forward(request, response);
    Le téléchargement se passe bien mais la redirection vers la nouvelle page ne se fait pas.

    Merci pour votre aide

    Sanouk

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Je pense que ceci est du au fait que ta response est déja commited et utiliser pour l'ouverture d'un fichier tu ne peux plus rediger ta page.

    Il faudrait surement passer par une page supplémentaire te renvoyant une information t'indiquant que le télechargement est fini, puis de faire un window.close de la page utilisée pour l'ouverture du document et ensuite faire ta redirection.

  3. #3
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Citation Envoyé par sanouk Voir le message
    Bonjour,

    RequestDispatcher rd = getServletContext().getRequestDispatcher("/MainMyApplications1.jsp?page="+numPage);
    rd.forward(request, response);

    Sanouk
    avec un point peut-être:
    RequestDispatcher rd = getServletContext().getRequestDispatcher("./MainMyApplications1.jsp?page="+numPage);

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Essaye comme ceci
    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
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            ServletOutputStream out = null;
            FileInputStream in = null;
            try
            {
                File f = new File("c:\\Temp\\test.txt");
    
                response.addHeader("Refresh", "1; /Web1/suite.jsp");
                response.addHeader("Content-disposition", "attachment; filename=" +f.getName());
                out = response.getOutputStream();
                in=new FileInputStream(f);
                int b;
                while ((b=in.read())!=-1)
                {
                     out.write(b);
                }
                in.close();
                out.flush();
            }
            catch (Exception e)
            {
                
            }
            finally
            {
                if (out != null) out.close();
            }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Désolé mais cela ne fonctionne toujours pas, après le téléchargement la redirection ne fonctionne pas.

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Je le repète pour moi ca ne peut pas marcher

    est ce que tu as une erreur dans la console ou fichier de log tu style :

    response has already committed

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sanouk Voir le message
    Bonjour,

    Merci pour vos réponses.
    Désolé mais cela ne fonctionne toujours pas, après le téléchargement la redirection ne fonctionne pas.
    Peux-tu montrer le code actuel ?
    Chez moi, ça fonctionne parfaitement sur Firefox et IE, tu dois avoir une petite erreur...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    Bonjour,

    Voici le code complet:
    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
     
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
        {
           Connection conn = null;
           ServletOutputStream out = null;
     
            try
            {
                int id_application=Integer.parseInt(request.getParameter("app"));
                int numPage=Integer.parseInt(request.getParameter("page"));
                String login_bdd = "somobile";
                String password_bdd = "somobile2009";
                String url = "jdbc:mysql://78.153.253.106:3306/schneider_final";
     
                Class.forName ("com.mysql.jdbc.Driver").newInstance ();
                conn = DriverManager.getConnection (url, login_bdd, password_bdd);
                java.sql.Statement stmt = conn.createStatement();
                java.sql.ResultSet rs = stmt.executeQuery("select * from application where id_application="+id_application);
     
                if (rs==null)
                return;
     
                rs.next();
                String filename=rs.getString("file");
                conn.close();
     
                FileInputStream in = null;
                File f = new File(filename);
     
                response.addHeader("Refresh", "1; /MainMyApplications1.jsp?page="+numPage);
                response.addHeader("Content-disposition", "attachment; filename=" +f.getName());
                out = response.getOutputStream();
                in=new FileInputStream(f);
                int b;
                while ((b=in.read())!=-1)
                {
                     out.write(b);
                }
                in.close();
                out.flush();
     
                /*response.setHeader("Cache-Control", "no-cache");
                File f=new File(filename);
                response.addHeader("Content-disposition", "attachment; filename=" +f.getName());
                ServletOutputStream out = response.getOutputStream();
     
                FileInputStream in=new FileInputStream(f);
                int b;
                while ((b=in.read())!=-1)
                {
                    out.write(b);
                }
                in.close();
                out.close();
     
                RequestDispatcher rd = getServletContext().getRequestDispatcher("/MainMyApplications1.jsp?page="+numPage);
                rd.forward(request, response);*/
     
            }
     
            catch(Exception e)
            { }
     
            finally
            {
                if (out != null) out.close();
            }
        }
    Merci de votre aide

    Sanouk

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.addHeader("Refresh", "1; /MainMyApplications1.jsp?page="+numPage);
    devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.addHeader("Refresh", "1; " + request.getContextPath() + "/MainMyApplications1.jsp?page="+numPage);
    Dans l'exemple que je donnais, Web1 représentait le nom de l'application, ce n'était pas évident apparemment
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    Bonjour,

    Merci et désolé pour la réponse tardive.
    J'ai toujours le même problème avec les lignes suivantes:

    response.addHeader("Refresh", "1; " + request.getContextPath() + "/MainMyApplications1.jsp?page="+numPage);
    response.addHeader("Content-disposition", "attachment; filename=" +f.getName());

    Sanouk

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quel est le serveur cible ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    Glassfish v3

    Sanouk

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je n'en ai pas un sous le coude pour faire des tests mais essaye ceci (à tout hasard)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setHeader("Refresh", "1; " + request.getContextPath() + "/MainMyApplications1.jsp?page="+numPage);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    C'est la même ligne que celle que tu m'as donné avant et ça ne fonctionne pas.
    Merci quand même
    sanouk

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sanouk Voir le message
    C'est la même ligne que celle que tu m'as donné avant et ça ne fonctionne pas.
    Merci quand même
    sanouk
    Non, c'est la méthode setHeader pas addHeader...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 73
    Par défaut
    Désolé, je n'avais pas vu la différence.
    Je viens d'essayer mais toujours le même problème que ce soit setHeader ou addHeader.
    Sanouk

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est curieux, je viens de faire le test sur un GlassFish v2.1 que j'avais installé suite à une discussion avec alexismp et ça fonctionne bien...
    Il y aurait donc une différence dans la v3 qui provoque ce dysfonctionnement
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. non compilation de page JSP apres changement ?
    Par pcouas dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 18/04/2009, 10h44
  2. ouverture fen popup à partir page jsp et récupération de ses données
    Par psycho_xn dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2008, 02h54
  3. Réponses: 7
    Dernier message: 03/06/2008, 14h05
  4. Fermer page HTML apres ouverture
    Par bcd_30 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/02/2008, 10h40
  5. Réponses: 2
    Dernier message: 02/06/2005, 10h21

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