アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaでWebアプリケーションを作成しています。
環境は以下の通りです。
java1.5
eclipse3.3
tomcat5.5
フレームワークは使用しておらず、ServletとJspです。
ブラウザはIE7です。

他の人が担当しているAシステムの画面A1のリンクを押すと、
私が担当しているBシステムの画面B1が別ウィンドウで起動します。
(リンクには引数としてユーザIDがついており、
左記のようなURLになります。http://hostpc:8080/Test/Index?userId=u0001)

ユーザIDを元にBシステムで初期表示する内容が異なるため、
利用者にはアドレスを知られたくないのですが、
引数つきのURLを受け取ると画面Bのアドレスバーに上記のURLが表示された状態になります。

Aシステム側にJavaScriptを埋め込み、
doPostで実行すれば引数部分は見えませんが、
AシステムはJavaScriptを埋め込むことができない前提になっています。
(BシステムはJavaScriptを埋め込むことが可能です。)

そのため、画面B1表示直後にJavaScriptを実行し、
さらに別画面で画面B2を起動しています。
(画面B2はアドレスバーを非表示にしています。
また、画面B1は自動的に閉じるようにしています。)

画面B1は一瞬だけ見えるのですが、
目を凝らすとアドレスバーのURLが読み取れてしまいます。
他に良い方法はないでしょうか?

A 回答 (2件)

AシステムでもJSPを使っているのであれば、ユーザIDをURIではなくセッションに保持することができます。



AシステムからBシステムへのリンクがアンカー(<A>タグ)ではなくフォームであれば、隠しオブジェクト(<input type="hidden" name="userId">)をAシステムに埋め込むことで対処できます。

上記2つが不可能で、アドレスバーのURIを絶対に読み取られたくないという要件であれば、一度ユーザと話し合うべきでしょう。

ところで、AシステムでJavaScriptが使えないとなると、『右クリック』→『ソースの表示』で簡単にリンク先のURIが見えるはずですが・・・それをユーザが把握しているかどうか気になるところです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

質問をわかりやすくするつもりで「Aシステムの画面でリンクを押す」
と記述しましたが、
実際にはAシステムはアプレットであり、アプレット上のボタンを押すと
Bシステムが起動する仕組みです。
そのためJSPは使用していません。正確に記述せず申し訳ないです。

NO.1の方から頂いたご回答から
リダイレクトを使用することを考え以下のような方法をとってみました。

Aシステムでボタンを押すとTestServlet1が起動する。
ボタンにはBシステムへのリンクが貼られている。
(http://~TestServlet1?userId=u01)
→TestServlet1の処理
 ユーザIDをセッションに保存しておく。
 TestServlet2が起動するようにリダイレクトを行う。
 (http://~TestServlet2)

TestServlet2が起動する
→TestServlet2の処理
 画面B1へフォワードする。

画面B1が通常のウィンドウで開く。
URLにユーザIDはなくリダイレクトしたURLが表示されている.
(http://~TestServlet2)
開くと同時(onload)にJavaScriptが実行される。
(window.openを実行する際、
一つ目の引数であるURLにTestServlet3をユーザIDつきで指定し、
三つ目の引数であるスタイルにツールバー等を表示しないオプションを指定する。
画面B1は強制的に閉じる。)

TestServlet3が起動する
→TestServlet3の処理
 ユーザIDを元に初期情報を取得しセッションに保存する。
 画面B2へフォワードする。

お礼日時:2011/01/05 20:07

リダイレクトを使えばいいと思います!

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

リダイレクトを試してみました。
Bシステムの画面のアドレスバーに引数がないURLを表示させることができました。

ただ、質問に記述し忘れてしまった
「Bシステムの画面ではツールバーやステータスバーを表示させたくない」
という要件がありまして、
これを満たすために画面B1を入れなければダメなのかなと思っております。

お礼日時:2011/01/05 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています