计算servlet中的相对路径?

时间:2012-06-01 14:12:39

标签: java servlets relative-path servlet-filters

我想创建一个servlet过滤器来计算任何给定servlet请求的根servlet的相关url路径。

因此对于绑定到http://somedomain/context/的servlet:

http://somedomain/context/path1/path2的请求将返回..

并且对http://somedomain/context/path1/path2/path3的请求将返回../..

有没有人知道这样做的可靠方法?

TIA

1 个答案:

答案 0 :(得分:3)

使用新的java文件系统实用程序(1.7),Path relativize(Path)方法应该可行。来自the Path Operations Tutorial


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

在没有任何其他信息的情况下,假设joe和sally是兄弟姐妹,意味着节点位于树结构中的同一级别。要从joe导航到sally,您可能希望先将一个级别导航到父节点,然后再导航到sally:

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

现在,无论这种技术是否可取,我都会留给其他人发表评论。

请注意,路径不需要存在于磁盘上,您也可以声明具有固定根目录的路径,因此Path类似new Path("/servlet/subdir/subdir2")Path类似new Path("/servlet") 1}}应该relativize(...)Path,如new Path("../..")。`