7

たとえば、単純な Java Web アプリケーションで、サーブレット TestServlet.java があるとします。展開の説明 ( web.xml ) では、たとえば、要求さ/testpage れたときに/testapplication/testpageTestServlet が要求を処理するように、要求を TestServlet にマップできます。たとえば、「He​​llo World」と書いて応答を送信できます。

ディレクトリ構造 (Web サーバーにデプロイされるアプリケーション) では、TestServlet.java は次の場所にあります。

webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java

つまり、ブラウザを使用してこのファイルにアクセスする方法はありません。( URL を入力するようなもの)

また、リクエスト ディスパッチャを取得して、リクエストおよびレスポンス オブジェクトを のような JSP ファイルに転送することもできます.getRequestDispatcher("/test.jsp")。しかし、その後、ファイルは

webapps\testapplication\test.jsp

したがって、http:\\server.com\test.jsp に接続すると、このファイルも取得されます。

私が提供したマッピング以外のクライアントがアクセスできないように、WEB-INF フォルダー内のファイルを非表示にしたいと考えています。

これを行うための適切な方法は何ですか?

4

2 に答える 2

10

クライアントがアクセスできないように、WEB-INF フォルダー内のファイルを隠したい。

WEB-INFたとえば、jsp ファイルを-(WEB-INF/jsp)の下に保持します。これにより、デフォルトでは、Web コンテナーは WEB-INF フォルダーの下のリソースにクライアントが直接アクセスすることを許可しませんが、RequestDispatcherはアクセスできます。

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

于 2013-11-07T18:38:00.917 に答える
0

jsf を使用している場合は、このファイルを WEB-INF フォルダーに置き、ナビゲーション ルールを使用してリクエストをページにマッピングできます。そうでない場合は、フィルターを作成し、<url-pattern>属性を使用して URL "/test.jsp" にマップし、任意の場所 (WEB-INF のページなど) にリダイレクトできます。

于 2013-11-07T18:44:07.847 に答える