1

画像の更新に問題があり、バックグラウンドでスクリプトを実行して画像を更新していて、新しい画像を X 秒ごとに表示したいのですが、ブラウザで実行すると画像が更新されません

<!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\>
        <title> Title </title> 

        <script>
            var image;
            var imgBase="images/test.jpeg"
            function count(){
                image.src=imgBase;
            }

            function init(){
                image = document.getElementById("image");

                if( image ){
                    setInterval("count()",1000);
                }
            }

            window.onload = init;
        </script>
    </head>
    <body>
        <img src="images/test.jpeg" id="image">
    </body>
</html>

Web アプリケーションには、次のディレクトリ ツリーがあります。

.
├── Home.jsp
├── images
│   ├── test.jpeg
├── META-INF
│   └── MANIFEST.MF
├── style.css
└── WEB-INF
    ├── classes
    │   └── test
    │       └── my
    │           └── new
    │               └── package
    │                   └── Test.class
    ├── lib
    └── web.xml
    9 directories, 10 files

Web コンソールに画像取得エラーは表示されませんが、更新されませんか?
[00:53:15.896] GET http://host:8085/Servlet/Display?config=L1 [HTTP/1.1 200 OK 2ms]
[00:53:16.419] GET http://host:8085/Servlet/images/test.jpeg [HTTP/1.1 200 OK 2ms]

助けてくれてありがとう、ありがとう!

4

1 に答える 1

0

ブラウザはブラウザキャッシュからの画像を表示しています。

回避策は、一意のリクエストパラメータ(タイムスタンプなど)を使用して画像をリクエストすることです。これにより、ブラウザは、ブラウザのキャッシュから画像を表示する代わりに、実際に新しいHTTPリクエストを送信するように強制されます。

function count(){
    image.src = imgBase + "?" + new Date().getTime();
}

この具体的な問題はサーブレットとは何の関係もないことに注意してください。さらに、HTMLコードをサーブレットクラスに直接配置することはお勧めできません。HTMLコードはJSPファイル(およびサーブレットクラスのJavaコード)に属します。

于 2012-09-04T11:36:44.243 に答える