- PR -

URLのパラメータを消す方法

1
投稿者投稿内容
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2006-12-22 09:12
現象を説明いたします。
バージョンとか関係なしに、Javaの一般的な解決方法について教えてください。

1.あるボタンを押すと「AbcServlet」を呼び出します。
2.「AbcServlet」の処理では、response.sendRedirect(ivURL + "?p=" + param);
でivURLとパラメータ付きのURLへリンクさせます。

そこで、質問なのですが、リンク先ではパラメータがブラウザに表示されてしまうのですが、パラメータをブラウザに表示させない方法がありますでしょうか?
ちなみに、リンク先ではこちらでは管理していないサーバーへとつながるため、リンク先ファイルはいじることができませんし、リンク先URL上でこちらから渡したパラメータを元に処理を行っているので、パラメータの受け渡しは必須となっております。
どうぞ、ご教授ください。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2006-12-22 10:06
Getではなく、Postを使えばパラメータはアドレスバーに出ないので
コード:
<form action="【別サーバのURL】" method="post">
<input type="hidden" name="p" value="【paramの値】">
<input type="submit" name="go" value="go">
</form>


みたいなページを返せばいいのでは?
リンク先のサーバがPOSTで返事してくれない場合は困りますが。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-22 10:24
リダイレクト先のURLをスッキリさせたい場合は、リダイレクト元のサーブレットではなくリダイレクト先でパラメータを受け取ってからパラメータがない URL にリダイレクトさせることが多いですね。

もちろん同じ Web アプリケーション内であればセッションやリクエストで値を渡せばいいわけですが。

どうしてもリダイレクト側で対処しないといけない場合は必要なパラメータを含んだ POST のフォームを返して、body の onload で submit させるようなトリックもいいかもしれません。

[ メッセージ編集済み 編集者: インギ 編集日時 2006-12-22 10:26 ]
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2006-12-22 10:44
ろ@yaさん返信ありがとうございます。

formのmethodをpostにする方法も考えたのですが、今回のパラメータはAbcServletサーブレット内でDBにアクセスして取得したデータなので、formのメソッドは使えないのです。もし、使えるようでしたら教えていただけますか?

インギさん返信ありがとうございます。
>もちろん同じ Web アプリケーション内であればセッションやリクエストで値を渡せばいいわけですが。
今回はリンク先が管理外サーバで変更したくないとのことなので、セッション・リクエストを使う方法はやはり難しいのでしょうか。

>どうしてもリダイレクト側で対処しないといけない場合は必要なパラメータを含んだ POST のフォームを返して、body の onload で submit させるようなトリックもいいかもしれません。
パラメータはAbcServletサーブレットのDBから取得したものなので、上記のトリックは使えないでしょうか。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-22 10:50
>パラメータはAbcServletサーブレットのDBから取得したものなので、上記のトリックは使えないでしょうか。
えーと、意味が伝わっていないかもしれません。
AbcServlet がフォームと onload でサブミットするスクリプトを含んだ html を返すわけですよ?
AbcServlet で必要な値を取得できたならば、必要なパラメータを含んだフォームを生成することも簡単だと思います。
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2006-12-22 11:00
>パラメータはAbcServletサーブレットのDBから取得したものなので、上記のトリックは使えないでしょうか。
えーと、意味が伝わっていないかもしれません。
AbcServlet がフォームと onload でサブミットするスクリプトを含んだ html を返すわけですよ?
AbcServlet で必要な値を取得できたならば、必要なパラメータを含んだフォームを生成することも簡単だと思います。

→動きとしてはこうでしょうか?
1.ボタンクリックをしてAbcServletを呼ぶ。
2.AbcServlet内でパラメータを取得し、HTML画面へ遷移
3.HTML中のhiddenに「2.」で取得したパラメータを格納し、セットしていたonLoadで管理外サーバへ遷移
4.管理外サーバ内でhiddenデータを取得

でよろしいですか?

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-12-22 11:21
はい。そんな雰囲気をイメージしていました。
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2006-12-22 11:27
早速、取り掛かってみます。
インギさんありがとうございました。
1

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