我想创建一个 servlet 过滤器来计算任何给定 servlet 请求的根 servlet 的相关 url 路径。
所以对于绑定到的 servlethttp://somedomain/context/
:
请求http://somedomain/context/path1/path2
将返回..
并且请求http://somedomain/context/path1/path2/path3
将返回../..
有谁知道一种可靠的方法来做到这一点?
TIA
我想创建一个 servlet 过滤器来计算任何给定 servlet 请求的根 servlet 的相关 url 路径。
所以对于绑定到的 servlethttp://somedomain/context/
:
请求http://somedomain/context/path1/path2
将返回..
并且请求http://somedomain/context/path1/path2/path3
将返回../..
有谁知道一种可靠的方法来做到这一点?
TIA
使用新的 java 文件系统实用程序 (1.7),该Path
relativize(Path)
方法应该可以工作。来自路径操作教程。
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
likenew Path("/servlet/subdir/subdir2")
和Path
likenew Path("/servlet")
应该relativize(...)
是Path
like new Path("../..")
。