Bonjour,

Voilà mon problème : j'ai un fichier qui contient une url d'une vidéo à afficher sur ma servlet jsp. Ma servlet doit aller voir toutes les 2 secondes dans ce fichier si il y a une nouvelle vidéo à afficher. Dans ce cas, elle l'affiche et efface la ligne du fichier.
Avec le code que j'ai écris, la page web n'affiche rien, elle est toujours en chargement. Merci de m'aider.

J'utilise tomcat dans netbeans.
index.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
 
<%@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">
<%@page import="data.Video" %>
<%@ page errorPage="error.jsp" %>
<%! Video video = new Video(); %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <% long t0 = System.currentTimeMillis();
           long t1;
           String videoCode = "";
           while (t0 != 0) {
               t1 = System.currentTimeMillis();
               if (t1 > t0 + 2000) {
                   videoCode = video.getVideoCode();
                   if (!videoCode.isEmpty()) {
                        %><META HTTP-EQUIV="Refresh" Content = "1; URL=index.jsp"><%
                       out.print(videoCode);
                       System.out.println("affichage de la video");
                   }
                   t0 = System.currentTimeMillis();
               } else {
                   Thread.sleep(100);
               }
               
           }
        %>
    </body>
</html>
video.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
package data;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
 
public class Video {
 
    boolean onTest = true;
 
    public Video() {
        // pendant les test, pour ne pas avoir à remplir le fichier à la main à chaque lancement
        if (onTest) {
            File file = new File("videoADiffuser");
            PrintWriter pw = null;
            try {
                pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
                pw.write("http://www.youtube.com/v/GwQMnpUsj8I&hl=en&fs=1");
                pw.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
 
    public String getVideoCode() throws IOException {
        File file = new File("videoADiffuser");
        BufferedReader br;
        PrintWriter pw = null;
 
        br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String url = null, code = "";
 
        // Lit l'url de la video dans le fichier
        if ((url = br.readLine()) != null) {
            code = "<p><object width=\"425\" height=\"344\">"
                    + "<param name=\"movie\" value=\"" + url + "\">"
                    + "</param><param name=\"allowFullScreen\" value=\"true\">"
                    + "</param><param name=\"allowscriptaccess\" value=\"always\">"
                    + "</param><embed src=\"" + url + "\""
                    + "type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\""
                    + " allowfullscreen=\"true\" width=\"425\" height=\"344\"> </embed></object><p>\n";
 
            // Efface
            pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
            pw.write("");
        }
        br.close();
        if (pw != null) {
            pw.close();
        }
 
        return code;
    }
}