2

特定のサーブレット リクエストに対してルート サーブレットへの相対 URL パスを計算するサーブレット フィルタを作成したいと思います。

したがって、にバインドされているサーブレットの場合http://somedomain/context/:

へのリクエストhttp://somedomain/context/path1/path2が返される..

へのリクエストhttp://somedomain/context/path1/path2/path3が返されます../..

これを行うための信頼できる方法を知っている人はいますか?

ティア

4

1 に答える 1

3

新しい Java ファイルシステム ユーティリティ (1.7) では、このPath relativize(Path)方法が機能するはずです。パス操作のチュートリアルから。


Path p1 = Paths.get("joe");
Path p2 = Paths.get("sally");

他の情報がない場合、joe と sally は兄弟であると見なされます。これは、ツリー構造の同じレベルに存在するノードを意味します。joe から sally に移動するには、最初に親ノードまで 1 レベル上に移動し、次に sally まで下に移動する必要があります。

// Result is ../sally
Path p1_to_p2 = p1.relativize(p2);
// Result is ../joe
Path p2_to_p1 = p2.relativize(p1);

さて、そのような手法が望ましいかどうかについては、他の人にコメントしてもらいます.

パスがディスク上に存在する必要はないことに注意してください。固定ルートを持つパスを宣言することもできるため、Pathlikenew Path("/servlet/subdir/subdir2")Pathlikeはlike .`にするnew Path("/servlet")必要があります。relativize(...)Pathnew Path("../..")

于 2012-06-01T14:34:03.400 に答える