- ベストアンサー
javaservlet内でHTMLを生成するとき
JavaServlet内でHTMLを生成するときに HTMLの一部にJavaScriptを使用しリロード(自動更新)の機能をつけたのですが TOMCATを使用し動作確認をするとリロードされませんでした。 そこで、質問をしたいのですが、JavaServletとJavaScriptは併用できないのですか? 作成したプログラムを書いておきます。 public class Test extends HttpServlet { int intCount = 100; public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html; charset=iso-2022-jp"); PrintWriter pw = response.getWriter(); if(intCount<=150){ if(intCount>0){ pw.println( "<html>" +"<head>" +"<body>" +"<SCRIPT LANGUAGE='JavaScript'>" +"<!--" +"setTimeout('location.reload()' ,1000);" +"//-->" +"</SCRIPT>" +"<title>カウントアップするサーブレット</title></head>" +"<center><table border='1'>" +"<tr><th colspan ='2'>カメラ画像</th></tr>" +"<tr><th align = 'center'>コマ数</th><th>"+ (intCount-99) +"コマ目</th></tr>" +"<tr><th>画像</th><td>" +"<img src='c:/java/yoyaku/test"+ intCount+ ".jpg'" +" WIDTH =416 HEIGHT=320></td></tr>" +"<br>" +"</table>" +"</center>" +"</body>" +"</html>"); } } intCount++; } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >そこで、質問をしたいのですが、JavaServletとJavaScriptは併用できないのですか? 出来ます。 アクセスがあるとサーブレットがHTMLを生成して返します。 ブラウザはそれを受け取り表示しています。 その中にJavaScriptが存在すれば、解釈し実行してくれます。 上のHTMLの吐き出しが問題かと思われます。 まず、<body>の位置がおかしいです。 <body>の位置を直したら、<body>タグを <body onLoad="setTimeout('location.reload()',1000);">としてみて下さい。
その他の回答 (2)
- osumitan
- ベストアンサー率33% (102/307)
ServletはHTMLかJavascriptか、文法的に正しいか、などは まったく意識せず、単なる文字列として返しているだけで、 それを解釈するのは受け取ったブラウザ側の仕事です。 よって、Javascriptを併用することは可能です。 ブラウザは、HTMLおよびJavascriptを、すべで受け取り終わってから 解釈するのではなく、受け取ったものから処理していきます。 問題のsetTimeout処理は、functionの中でもなく書かれているので この部分は、読み込まれて即座に実行されてしまいます。 そして、おそらくページが読み終わっていないので うまく動かないということになると思われます。 ページが読み終わったところで自動的に実行させるには、 No.1の方がおっしゃるように、<body>のonLoadを拾います。 そうすると、ページが読み終わったところで処理が走ります。
- LancerVII
- ベストアンサー率51% (1060/2054)
申し訳ございません。 追加です。 +"<SCRIPT LANGUAGE='JavaScript'>" +"<!--" +"setTimeout('location.reload()' ,1000);" +"//-->" +"</SCRIPT>" この部分は削除してください。
お礼
ありがとうございます。 早速試してみます。