- - PR -
サーブレットからサーブレットへの情報の引渡し方法について
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-03-03 12:05
サーブレットからサーブレットへの情報の引渡し方法で悩んでいます。
現状、 jsp(FORMの情報をPOST) → サーブレットA という方式で動いています。 それを、 jsp(FORMの情報をPOST) → サーブレットB → サーブレットA という方式に変更することを考えています。 (サーブレットBを新たに追加) その際、サーブレットBで前画面からPOSTされた情報に対して加工・追加を 行い、サーブレットAに渡したいのです(新しい方式では、前画面からのPOST項目 は減らし、サーブレットBで不足分を補ってサーブレットAに渡したいのです)。 説明が下手で申し訳ありませんが、 旧) FORMからのPOST項目 → サーブレットA test1='A' test2='B' test3='C' 新) FORMからのPOST項目 → サーブレットB → サーブレットA test1='A' test1='A' (そのまま) test2='A' test2='B' (変更) test3='C' (追加) ということをやりたいのです。 もともとサーブレットAに渡していた項目数は減らしません。 (サーブレットAの改修は行えないので) サーブレットBで受け取った項目を単にサーブレットAへリダイレクトする方法 は分かったのですが、項目の追加と、値の変更を行った後の引渡し方法が分かり ません。 セッションは使わない方針でいますので、サーブレットBからサーブレットAへ POSTするような感じのものができないか悩んでいます。 もしお解かりの方がいましたら、ご教授お願いいたします。 | ||||
|
投稿日時: 2004-03-03 13:29
もんもと申します。
こんな感じでしょうか? RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/servlet/SampleServlet2"); rd.forward(request, response); | ||||
|
投稿日時: 2004-03-03 13:34
もんもです。
追加します。 サーブレットBで request.setAttribute("データ","サーブレットB"); ↑こういう風にすればサーブレットAで String string = (String)request.getAttribute("データ"); でデータを取得できます。 | ||||
|
投稿日時: 2004-03-03 13:44
違う観点から。
サーブレットフィルタというのがあります。 今回のケースに適用できるかどうかはわかりませんが。 | ||||
|
投稿日時: 2004-03-03 13:47
もんもさん、こんにちは。
回答ありがとうございます。 サーブレットA側で request.getAttribute("データ"); ではなく request.getParameter( "データ" ) で受け取れるための方法ってないでしょうか。 ご教授いただいて申し訳ありませんが、よろしくお願いします。 | ||||
|
投稿日時: 2004-03-03 14:17
これは、通常のクライアントからのHTTP GETやHTTP POSTのふりをしないと無理でしょう。 どちらにしろforwardではなくsendRedirectするとして、GETならばリダイレクト先の URLにパラメタを付け加えて「http://.../xxxServlet?hoge=fuga&...」という形式で 書けばいいでしょう。 POSTならば、Servletの出力ストリームを取得して、そこにPOSTパラメタを送信する ことになるのかな。。。ちょっとこちらはやったことが無いので分かりません。 | ||||
|
投稿日時: 2004-03-03 15:14
もんもです。
getParameterですべてのデータを取得したい理由はなんとなく 推察できますが、setParameterはできないと思われます。 データ取得側ですべてのデータをgetAttributeでデータを取得できるようにするほうが いいと思います。 データを格納するクラスを作ってAttributeに入れておけばいろんなところで リクエストにsetAttributeする必要がないのでいいような気がします。 システムによってベストな方法はそれぞれあると思いますが、 僕はデータ格納用のクラスを作ってしまいます。 (StrutsのActionFormみたいな感じです。) | ||||
|
投稿日時: 2004-03-03 15:27
これが全てを表しているような気がしますが。。。 | ||||
