• 締切済み

Formのデータが欠落することがある

クライアントからFormのsubmitで送られてくるデータ(Formの中のデータ)が欠落(全てnull)する現象が、複数のクライアントで1ヶ月に数回起きています。 このカテゴリでの質問ではないかも知れませんが、Java技術者の方の豊富な経験を頼りにお伺いしました。 原因として考えられること、対策(システム的に、nullの場合もう一度Submitしてもらう機能など)を教えていただきたく存じます。 参考になるサイトのご紹介もよろしくお願いします。

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.6

実際にそれが原因でデータの喪失などの問題が発生しているのですか? そうでなくログだけの話なら単純にURL直打ち込み等をされたか もしくはBOTやブラウザの拡張などからのアクセスで データの送信がないアクセスがあっただけではないでしょうか? 問題が起こっているのであれば対策を考えられますが お話を聞く限りではそれはなにも問題ではない気がします まあ入力が不備だったらエラーページを出してブラウザバックして貰うのが一番楽じゃないですかね

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.5

> また、原因として、IEのバグとか、ルーターの性能の可能性はあるでしょうか。 どちらもゼロではないですが、可能性は低い気がします。 IEの特定のバージョンで起こる現象なのであればそこから調べてみることもできますが、 IEにFormのデータが消えてしまうバグがあったら世界規模で大事件ですよね……(笑) HTTPはTCPの上に成り立っているため、 通信経路上でのデータの欠損に関して、基本的にはアプリケーション側で気にする必要はないと思います。

Horirin39
質問者

お礼

ご回答ありがとうございます。 問題の解決には至りませんでしたが、新しい知識の習得や、考え方を教えていただきました。 とても参考になりました。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.4

推測でしかないですが、原因は ・クライアント側のバグ  (HTML, JavaScriptに不備があって、空のPOSTをしてしまう) ・サーバーアプリケーション側のバグ  (受信してからログに出すまでに何かが起きている) ・クライアントとサーバーの間にプロキシがある?(全くあり得ない話ではないので一応列挙……) のいずれかだと思います。 調査方法ですが、パケットキャプチャですかね…… 面倒ではありますが、クライアント側の問題かサーバー側の問題かの切り分けはできます。

Horirin39
質問者

お礼

ご回答ありがとうございます。 パケットキャプチャーの件、試して見たいと思います。 また、原因として、IEのバグとか、ルーターの性能の可能性はあるでしょうか。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 >エラー画面を表示すると、それまで画面入力していたデータが消えてしまいますので、 >もう一度submitの意味がなくなります。 >親画面を残したまま、ポップアップ画面などを表示させることはできないでしょうか。 Ajaxを利用して非同期でリクエストを投げてnullになっていたらエラー表示をするようにすれば画面上に入力された値は残っているはずです。 ただ、根本の原因を探さないと何度Ajaxにてリクエストを投げてもnullでエラーとなって登録できない状況になるかもしれません。 Ajax 非同期通信 なんかで検索すれば参考になるサイトが出てくると思います。

Horirin39
質問者

お礼

教えていただきましてありがとうございます。 一番知りたいのは根本原因なのです。 推測で結構ですので、考えられることを教えてください。 出来れば調査方法も教えていただければありがたいです。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 ブラウザ依存では無いか等の切り分けはできていますか? 特定のユーザーであったり。 またnullであるという確認はどのような手順で判明しましたか? (リクエストには入ってくるけど処理上でnullになる可能性等) nullの場合もう一度submitしてもらうのはアプリの作り方次第だと思います。 nullの状態であることがサーバ側でわかるのであれば、エラーを表示してもう一度登録を促せば良いはずです。

Horirin39
質問者

補足

ブラウザ依存です。IE7,IE8、IE9での動作に限っています。 利用しているユーザーはIDとパスワードを付与しているユーザーに限られます。 nullであることは、本システムのLOGで解ります。(アプリケーションLOG) エラー画面を表示すると、それまで画面入力していたデータが消えてしまいますので、 もう一度submitの意味がなくなります。 親画面を残したまま、ポップアップ画面などを表示させることはできないでしょうか。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 手助け出来るかわかりませんが Javaのシステムと言ってもいろいろありまして、どのような構成なのでしょうか? (formと言ってるからWeb系?) どういったシステムだか補足頂けますか? 対象クライアント サーバ構成 使用フレームワーク等

Horirin39
質問者

補足

対象クライアント:システム利用契約いただいているユーザー、ブラウザを起動し、IDとパスワードで   ログインし、各種の画面でデータを入力します。登録ボタンなど、ボタンをしますと   JSPでsubmitされます。 サーバー構成:CENTOS5、Apache2.2、Tomcat5.0、PostgreSQL9.2を使っています。   サーバーでは、クライアントから送られてきたデータを処理してDBの更新を行い、更新後の画面を   クライアントに送ります。 よろしくお願いします。

関連するQ&A