- PR -

スクリプトの時計をサーブレットへ

投稿者投稿内容
omopurike
常連さん
会議室デビュー日: 2008/04/03
投稿数: 38
投稿日時: 2008-08-19 18:48
スクリプトの時計をサーブレットでデータを使いたいので<form>でデータ(時間)を飛ばしたいのですができるでしょうか?
時計としては↓な感じのを考えています。


<html>
<head>
<title></title>
<script>
<!--
function func() {
dd = new Date();
year = dd.getYear(); if (year < 2000) year += 1900;
mon = dd.getMonth() + 1; if (mon < 10) mon = "0" + mon;
day = dd.getDate(); if (date < 10) date = "0" + date;
hour = dd.getHours(); if (hour < 10) hour = "0" + hour;
min = dd.getMinutes(); if (min < 10) min = "0" + min;
sec = dd.getSeconds(); if (sec < 10) sec = "0" + sec;
document.form.clock.value =
year + "/" + mon + "/" + day + " " +
hour + ":" + min + ":" + sec;
setTimeout("func()", 1000);
}
// -->
</script>
</head>
<body>
<body onload="func()">
</body>
</html>
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-08-19 18:50
submit()すれば。

連続で使いたいのなら、formのtargetを見えないframeにすれば良いです。

[ メッセージ編集済み 編集者: mio 編集日時 2008-08-19 18:51 ]
omopurike
常連さん
会議室デビュー日: 2008/04/03
投稿数: 38
投稿日時: 2008-08-20 00:29
年とか月、時間を変数別にservletに飛ばしたいのですがどうかいたらいいでしょうか?
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-08-20 02:27
クライアントで new Date() してもあてにならんと思うのだが・・・

年・月・日 3つのhidden用意して格納して「飛ばしたら」
いいでしょうね。

サーバー日付を元にしてクライアントで秒を刻むってならまだ
話がわかるんだが、一体何に使うの?

それとも、METAフレームだからサーバーもクライアントもあった
もんじゃないってこと?
omopurike
常連さん
会議室デビュー日: 2008/04/03
投稿数: 38
投稿日時: 2008-08-20 19:35
時間を登録するプログラムを作ろうとしてるのですが、できれば年とか時間を分けて処理をしたいのです。

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-08-20 20:32
その時間がクライアントの時間でなければならない理由は?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-20 21:03
クライアントとサーバがあるシステムで、
クライアントの時間が必要になるケースって、
大抵設計が間違っているような気がする。

ちゃんと意義があってやっているならわかるんですが、
質問のレベルからすると、設計が間違っているような気がしてならない。

楽な方法をいうと、JavaScriptのDateのgetTime()を送るといいですよ。
その値を元にJava側でnew Date(引数)として使えるんで。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-08-21 02:39
勘違いしないでもらいたいのですが、皆さん答えを出し渋っているのではなくて
スレッド冒頭から怪しい方向に行っている雰囲気が漂っているので正しい方向に
導くための手助けをしようとしているだけです。

以下の質問に答えて下さい。ちゃんと答えてくれないと困るのはあなたです。
(1)クライアントの日付はサーバーの日付と異なることが多々あるというのは
   理解していますか?
(2)クライアントの日付・時刻をサーバーで何をしようとしていますか?
(3)その日付がキーとなる処理がありますか?

かつのりさんの方法は以下のようにして実現できます。
location.href="http://xxx/zzz?time=" + (new Date()).getTime();
zzz サーブレットに GETパラメータとして "time" という名前の時刻を渡します。
サーバーのJava/CS/VB で、日付クラスに time の値を渡せばクライアントの日付
を取ることが出来ます。

mio さんの方法は以下のようにして実現できます。
<form id="form1" method="post" action="zzz" target="frame1">
<input type=text name="time" id="time" />
</form>
<iframe name="frame1" id="frame1" style="display:none"></iframe>
<script>
document.getElementById("form1").submit();
</script>
君の作った時刻を刻むメソッドの表示領域として、time という名前の
テキストBOXに時刻を表示して、このフォームをサブミットすれば、
サーバー側の処理でその値を取得することが出来ます。
例えば、"2008/12/20 12:23:30" という日付・時刻が入っていたら、
Date date = new Date(request["time"]);
ってやれば、日付を取れます。

質問に答えなくて、「ありがとうございました」でもいいのですが、
なぜクライアントの時刻が必要なのか?だけは答えてくれると嬉しい
ですね。かつのりさんも言っているように、クライアント日付が、DB
に格納されて、それをキーに何か処理が行われようというとき、その
日付があてにならないことが後のプログラムの動作に悪影響を及ぼす
ことは明白ですから。








スキルアップ/キャリアアップ(JOB@IT)