- PR -

Strutsから他サイトへのPOST値送信について

投稿者投稿内容
焼肉のたれ
会議室デビュー日: 2006/12/12
投稿数: 7
投稿日時: 2006-12-12 00:47
初めて投稿させていただきます。
質問事項ですが、
Strutsを使用したフレームワークから、外部サイトへ向けString型の
POST値を送ろうと思っているのですが、上手く出来ません。
自分なりに考え、
Actionクラス側
request.setAttribute("aaa","aaa")
JSP側
request.getParameter("aaa")
等とやってもとれません。
JSP側で<bean:write name="aaa" />とすれば取れますが、送り先が他言語の為、String型のPOST値で送るしかない状況です。
HttpSessionを使えば上手くいくのですが、出来れば使用せず作成したいと思っています。
また、画面数を減らしたい為、JSPへ一度表示させ、ボタン及びJavaScriptによるリダイレクトは避けたいと考えています。
どなたか、ご存知の方がおりましたらお教え下さい。

尚、開発環境は下記の通りです
Java 1.4
Struts 1.2
Tomcat 5.0
よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-12 01:15
・外部サイトとは?
まず、「外部サイト」とは何を表していますでしょうか?
Struts が動いているのとは別のホストで動いている Web サーバのことを指しているのでしょうか?

・HttpSession ではうまくいく?
外部の Web サーバではセッションは伝搬しません。
しかし HttpSession では上手くいくというのは具体的にどういう意味でしょう?

・POST のパラメータはどこに設定?
POST と HttpServletRequest.setAttribute() は無関係ですね。
外部サイトじゃない場合でも HttpServletRequest.setAttribute() で POST するようなことはできないのではないでしょうか?

・送り先は多言語?
「送り先が他言語」とありますが、request.getPrarameter() って Java の表現ですよね。
「JSP側」というのは送り先ではないのでしょうか?
送り先が外部サイトでなくても、JSP側で<bean:write name="aaa" />とやっても POST パラメータは取得できません。

今一度質問を読み直して、何をやりたいのか整理して説明してみてはいかがでしょうか。
もしかすると POST の仕組み自体勘違いしているのかもしれません。
自信がないようでしたらまずは Struts や JSP を使わずに HTML だけで POST するフォームを書いてみるといいかもしれません。

[ メッセージ編集済み 編集者: インギ 編集日時 2006-12-12 01:28 ]
焼肉のたれ
会議室デビュー日: 2006/12/12
投稿数: 7
投稿日時: 2006-12-12 09:42
ご指摘ありがとうございます。
説明不足の上、知識不足で申し訳ございません。
>・外部サイトとは?
>まず、「外部サイト」とは何を表していますでしょうか?
>Struts が動いているのとは別のホストで動いている Web サーバのことを指しているの>でしょうか?
はい。別ホストで動いているWebサーバです。
>外部の Web サーバではセッションは伝搬しません。
>しかし HttpSession では上手くいくというのは具体的にどういう意味でしょう?
おっしゃる通りです。
ローカルサーバ内で開発をしていまして、このような試験をやっていた訳です。
すみませんでした。
>・POST のパラメータはどこに設定?
>POST と HttpServletRequest.setAttribute() は無関係ですね。
>外部サイトじゃない場合でも HttpServletRequest.setAttribute() で POST するよう
>なことはできないのではないでしょうか?
すみません。
お恥ずかしい限りですが、HttpServletRequest.setAttribute()でセットされるのはPOST値だと勘違いしてしていました。

>・送り先は多言語?
>「送り先が他言語」とありますが、request.getPrarameter() って Java の表現ですよ
>ね。
確かにrequest.getParameter()はJavaの表現です。

>「JSP側」というのは送り先ではないのでしょうか?
>送り先が外部サイトでなくても、JSP側で<bean:write name="aaa" />とやっても POST
>パラメータは取得できません。
まったくその通りです。
そこで今回の質問であるStrutsからのPOSTパラメータの送信方法を知りたいのです。

データの流れをもう少し説明しますと
HTMLからPOSTパラメータを送信

ビジネスロジック内で受け取ったPOSTパラメータを加工

Struts側から加工したPOSTパラメータを送信

ASPやJavaScript等でPOSTパラメータを受信
以上の流れです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-12-12 10:09
外部サイトへアプリケーション内からリクエストを送るのであれば、要するにアプリ
ケーションがその外部サイトの「クライアント」になる必要があるわけです。つまり、
そのアプリケーションが受け取ったパラメータを取り出して、HTTPで外部サイトに
対してPOSTしてやる必要があるわけです。

そのための実現方法はいろいろありますが、Jakarta CommonsプロジェクトのHttpClient
コンポーネントを使うのが一番簡単でしょう。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-12-12 12:46
標準APIだけなど縛りがある場合は、URLConnectionあたりを
使ってみる方法もあります。使い方はネットで調べてみてください。
焼肉のたれ
会議室デビュー日: 2006/12/12
投稿数: 7
投稿日時: 2006-12-12 13:47
小僧様、uk様、ご返答ありがとうございます。
お二方の教えてくださったのはアプリケーションからコネクションを確立してデータの通信を行う方法ですね。
大変申し訳ございません。質問のミスで私の欲している回答とは違う方向になってしまいました。
しかし、私の知らなかった機能であり、知識として得る事が出来ました。
ありがとうございます

インギ様のおっしゃる通り、POSTパラメータを勘違いしていました。
その為、間違った質問をしていました。
本来の質問としましては、
HttpServletRequestにString型の引数を渡して、StrutsJSP以外で読み出す方法を探しています。
大変ご迷惑をお掛けしますがよろしくお願いします。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-12-12 13:54
るぱんです。
まず、簡単なモデルを投入してみます。
コード:
パターン1
SiteA--------------------
画面A
  ↓
StrutsActionClass
  ↓
SiteB--------------------
画面B


コード:
パターン2
SiteA--------------------
画面A
  ↓
SiteB--------------------
StrutsActionClass
  ↓
画面B



どちらのパターンを目指していて、
青鏡さんが作成してるのはどの部分でしょう?
焼肉のたれ
会議室デビュー日: 2006/12/12
投稿数: 7
投稿日時: 2006-12-12 13:59
るぱん様、ご返答ありがとうございます。
私の考えているのはパターン1です。
さらに私が作成して悩んでいるのは
>StrutsActionClass
> ↓
>SiteB--------------------
>画面B
の箇所です。


[ メッセージ編集済み 編集者: 青鏡 編集日時 2006-12-12 14:09 ]

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