- PR -

strutsを使用したアプリで表示されるURL欄について

1
投稿者投稿内容
ノヴァ
会議室デビュー日: 2006/03/31
投稿数: 14
投稿日時: 2006-03-31 15:29
初めて投稿します。

現在struts1.2を利用して開発をしていますが、URLの欄に表示される値を一定の値にしたいのですが、やり方を知っている方がいましたら教えてください。

たとえば、
AAアクションが呼ばれた後に、BBアクションが呼ばれるとします。
すると、URL欄が「〜/xxx/AA.do」⇒「〜/xxx/BB.do」と変わってしまいます。
希望としては、BBアクションが呼ばれたあとも「〜/xxx/AA.do」と表示されてほしいのです。

わかりにくい文章ですが、どうか宜しくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-31 16:14
リダイレクトをすればOkです。
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletResponse.html#sendRedirect(java.lang.String)
ノヴァ
会議室デビュー日: 2006/03/31
投稿数: 14
投稿日時: 2006-03-31 17:01
インギさん、ありがとうございます。
>リダイレクトをすればOkです。
>http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRe>sponse.html#sendRedirect(java.lang.String)

sendRedirectを使用して「/AA.do」と記述すると、「/BB.do」のアクションを
実行してくれず、再度「/AA.do」が実行されてしまうので、このやり方ではダメでした。
希望としては、ユーザ側にURL欄でどんなアクションが動いているのか等を知られたくないのです。
(ログイン時に「〜/Login.do」が呼ばれたとしたら、その後はどのアクションが呼ばれてもURL欄には「〜/Login.do」と出力させたい)
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-03-31 17:23
フレームでやれば簡単に出来ると思いますが...
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-31 18:15
リクエストにどのアクションを呼びだすかという情報が含まれていないと、どのアクションを呼びだすか判断することはできません。
単にURL欄にさえ表示されなければ良いのであれば「未記入」さんの仰るとおりフレームを使うのがシンプルでよいですね。

forward先をセッションに格納して毎回 forward.do みたいなアクションへリダイレクトするのはいかがでしょうか?
リダイレクトされる前はどうしても /BB.do が呼びだされますので根本的な解決にはなりませんが。

あとは AJAX で画面遷移しないアプリケーションを作るとか?
プロキシサーバのログなりパケットキャプチャなりすればどんな URL を呼びだしているかわかりますが、カジュアルな解析はある程度予防できるかと。
ハイネマン
会議室デビュー日: 2006/03/15
投稿数: 10
投稿日時: 2006-04-01 22:02
Strutsでしたら,struts-config.xmlでリダイレクトの設定をすれば
URLを変えずにActionが呼べた気がします。
<forward>タグのcontextRelative属性か,redirect属性の設定で。

詳しく調べてませんが,ご参考までに。
ノヴァ
会議室デビュー日: 2006/03/31
投稿数: 14
投稿日時: 2006-04-03 13:53
返信が遅くなってしまい、すいませんでした。
未記入さん、インギさん、ハイネマンさん、返答ありがとうございました。

--------------------------------------------------------
フレームでやれば簡単に出来ると思いますが...
--------------------------------------------------------
これはreturnをFrameにするということでしょうか?
もしそうなら、現在は画面によってreturnをFrameであったり、Body部分であったりと分けているので、難しいかもしれません。

------------------------------------------------------------------------------
forward先をセッションに格納して毎回 forward.do みたいなアクションへリダイレクトするのはいかがでしょうか?
------------------------------------------------------------------------------
これはURLの表示という点ではうまくいきました。
ただ、各アクションの動作に問題がないか調査する必要があるので、今のところ保留とさせていただきます。

---------------------------------------------------------------------
Strutsでしたら,struts-config.xmlでリダイレクトの設定をすれば
URLを変えずにActionが呼べた気がします。
<forward>タグのcontextRelative属性か,redirect属性の設定で。
---------------------------------------------------------------------
まだ試してませんが、やってみたいと思います。

以上、ありがとうございました。
ゴイチ
会議室デビュー日: 2004/09/06
投稿数: 3
投稿日時: 2006-07-04 13:17
3ヵ月越しで返答するのもどうかと思いましたが、
Struts-config.xmlのリダイレクト設定方法を載せておきます。

<action
attribute="xxx"
input="xxx"
name="xxx"
path="xxx"
type="xxxxx">
<forward name="success" path="yyy.do" redirect="true" />
<forward name="error" path="error.jsp" />
</action>

forwardタグにredirect="true"と設定することにより、上記の例でいうと
yyy.doがリダイレクトされ、ブラウザのアドレス欄に表示されます。
逆にredirect="false"にするとxxx.doが表示されます。
基本的に何も書かなければredirect="false"なので、すでにstruts-config.xmlに
redirect="true"が設定されているのではないでしょうか?

1

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