2012-06-01 56 views
2

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

因此,对于绑定到http://somedomain/context/一个servlet:

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

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

是否可靠方式的任何一个知道做这个?

TIA

+3

为什么不能总是返回'/ context'? – adarshr

+0

我为所有其他链接使用相对URL,并且我在想在这里保持一致。我可能是错的,但那是我的想法。 – BillMan

+2

请勿使用相对链接。至少不是'../','../ ..'类型。始终构建完整的网址。但一定要动态获取上下文,而不是对其进行硬编码。 – adarshr

回答

3

有了新的Java文件系统实用程序(1.7)的Pathrelativize(Path)方法应该工作。从the Path Operations Tutorial


​​

在没有任何其他信息,假定Joe和Sally是兄弟的,这意味着驻留在树结构中的相同级别的节点。从乔导航到萨利,你会希望先浏览一个水平提高到父节点再向下突围:现在

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

,这种技术是否是可取的,我会离开,向其他人发表评论。

注意,路径不需要在磁盘上存在,并且你还可以声明具有固定根目录的路径,所以Pathnew Path("/servlet/subdir/subdir2")Pathnew Path("/servlet")应该relativize(...)Pathnew Path("../..") .`