2016-03-28 11 views
0

要するに、GETリクエストをJSPに転送するサーブレットがあり、ユーザーからターゲットURLを「非表示」にしたい。次のようにRequestDispatcherを使用してServletからJSPにリクエストを転送してもターゲットURLが隠されない

私のセットアップは次のとおりです。

  1. "www.mydomain.com/pages/page1を"
  2. A JSP、アドレスの「/ WEB-INF /ページ/ Page1のURLにマップされたサーブレット、 .jsp "、アプリケーションルートからの相対パスです。 JSPは、ブラウザから直接アクセスできないように、WEB-INFディレクトリにあります。
  3. ブラウザからのアクセス時に

、サーブレット前処理着信GETリクエスト、および転送しJSP次のコード・スニペットを使用して:

request.getRequestDispatcher("/WEB-INF/pages/page1.jsp").forward(request, response); 

所望の挙動がブラウザにするためのものですユーザーがJSPの内容を見ている間は、URL「www.mydomain.com/pages/page1」を維持します。

残念ながら、ブラウザは一貫してJSPのURLを表示するには、スイッチ: "www.mydomain.com/WEB-INF/pages/page1.jsp"(ChromeとFirefoxで動作確認済み)

は誰も私を伝えることができ、どのようなこの現象を引き起こす可能性がありますか?

出典: このソリューションは、それらがJSPにアドレスを「隠し」で成功している。このCodeRanchの答えに記載されている:http://www.coderanch.com/t/618800/JSP/java/Url-hiding

+1

これはうまくいくはずです。サーブレットの 'doGet()'メソッドと 'web.xml'の' servlet-mapping'メソッドを送信できますか? –

+0

@ W-S、これもうまくいくと確信してくれてありがとう。これは私にいくつかのデバッグをさせ、問題のかなり遠いものを見つけることになった。下の私の答えを見てください。 – paulkore

答えて

0

は私の実装の周りにいくつかの大規模な突きをした、私ができましたこの問題の原因を特定する。正確なソースコードはここに投稿するには複雑すぎ、実際は無関係です。

この不明瞭なJavascriptの行は、別のユーティリティクラスからスクリプトレット(旧式の習慣)を使用してJSPに引き込まれたために発生しました。レガシーの理由

<script type='text/javascript'> 
    window.history.replaceState(null, document.title, sanitizedURL); 
</script> 

、ページのURLは、そのクエリ文字列の一部を除去することにより、「消毒」されていましたし、「窓の歴史の状態を置き換える」に行われました。私はそれがページの再ロードとして適格かどうかはわかりませんが、望ましくない副作用が実際のリソースURL "www.mydomain.com/WEB-INF/pages/page1.jsp"の浮上しています。

ボトム同じような問題が発生している場合は、ウィンドウ/ドキュメントの状態を乱しているJavascriptを探してみてください。

関連する問題