- PR -

JSPにおける送信終了後の処理方法

1
投稿者投稿内容
ほまらら
ベテラン
会議室デビュー日: 2005/10/19
投稿数: 54
投稿日時: 2005-10-19 12:15
WebアプリケーションをTomcat−JSPで作成しています。
そのページの中で、リクエストに応じたグラフのpngファイルを動的に作成してページ上に表示する、という事をやっているのですが、その際、クライアント側に表示してしまえばサーバ側のpngファイルは不要となるので、送信し終わったタイミングでサーバ側のpngファイルを削除したいのですが、この『クライアントに送信し終わった後で何かを行う』方法がわかりません。
ご存知の方がいらっしゃれば、ご教授お願いします。
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2005-10-19 12:29
どんたくおです。こんにちは。

削除のアクションをユーザに頼るのはどうでしょうか。
ページに動的に生成した画像を表示させ、その下あたりに、フォームに「削除する」ボタンなんかをつけておいて、サブミットされたら、該当pngファイルをサーバ上から削除。
// すみません。他力本願の本領を発揮してます。m(_|_)m

既に、お考え済みでしたら、申し訳ないです。
的をはずしているかもしれませんが、何かのご参考になれば幸いです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-10-19 12:39
引用:

そのページの中で、リクエストに応じたグラフのpngファイルを動的に作成してページ上に表示する、という事をやっているのですが


参考までに、どのような方法で行っているのでしょうか?



方法としては、何種類かあると思いますが、

1.専用のpngファイル表示用のサーブレットを作成する。
2.web.xmlで、pngファイルの拡張子と上記サーブレットのマッピングを行う。
3.HttpServletResponse#getOutputStreamで取得したストリームに
                 pngファイルのバイナリを流し込む。
4.転送が終了した段階で削除を行う。

という感じでうまくいくと思うのですが。
ほまらら
ベテラン
会議室デビュー日: 2005/10/19
投稿数: 54
投稿日時: 2005-10-19 12:45

どんたくおさん、こんにちは。
返答ありがとうございます。

おっしゃる方法でも削除はできると思いますが、私としてはユーザはまったく当てにならないものという前提で作りたいと思っています。
もしユーザが削除処理を忘れてしまったら、サーバー側にはファイルが溜まる一方となってしまって危険ですし・・・。
現在は、誰かがそのページに入ってくるたびにpng用のフォルダをチェックして、数分前以前に作られたファイルは削除する、という手段でファイルの増殖を防いでいるのですが、これもユーザ数如何では安全とはいえない状態ですので、極力リクエストの処理終了とともに不要なファイルは削除してしまいたいのです。
ほまらら
ベテラン
会議室デビュー日: 2005/10/19
投稿数: 54
投稿日時: 2005-10-19 13:08
かつのりさん、こんにちは。
pngファイルの動的作成ですが、現在gnuplotを使用しています。
リクエストに応じたデータをデータベースから呼び出してdatファイルとplotファイルを作成し、Runtime#execでgnuplotを動かしてpngファイルを作成させ、できたpngファイルのパスを<img>タグの中で指定する、という感じです。
gnuplotはLinuxのアプリケーションなのでRuntime#execに頼らざるをえませんが、JFreeChartならばJavaだけで完結させることも可能なはずです(やったことありませんが)。

おっしゃられた方法ですが、web.xmlの操作やresponseは扱ったことがありませんでしたが、勉強して検討してみます。
ご返答ありがとうございました。
1

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