WEB-INF フォルダー内の JSP ファイルを非表示にするにはどうすればよいですか?[重複]

StackOverflow https://stackoverflow.com/questions/19843715

質問

たとえば、単純な Java Web アプリケーションで、サーブレット TestServlet.java があると想像してください。デプロイメントの説明 ( web.xml ) では、たとえば次のようなリクエストをマップできます。 /testpage TestServlet に送信すると、 /testapplication/testpage 要求された場合、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 est.jsp に接続すると、このファイルも取得されます。

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

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

役に立ちましたか?

解決

WEB-INF フォルダー内のファイルを非表示にして、クライアントからアクセスできないようにしたいと考えています。

jsp ファイルを次の場所に保管してください WEB-INF 例えば ​​- (WEB-INF/jsp), そのため、デフォルトでは、Web コンテナーは、クライアントによる WEB-INF フォルダー内のリソースへの直接アクセスを許可しませんが、 RequestDispatcher アクセスできます。

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top