我想创建一个servlet过滤器来为任何给定的servlet请求计算根servlet的相关url路径。计算servlet中的相对路径?
因此,对于绑定到http://somedomain/context/
一个servlet:
到http://somedomain/context/path1/path2
的请求将返回..
和http://somedomain/context/path1/path2/path3
请求将返回../..
是否可靠方式的任何一个知道做这个?
TIA
我想创建一个servlet过滤器来为任何给定的servlet请求计算根servlet的相关url路径。计算servlet中的相对路径?
因此,对于绑定到http://somedomain/context/
一个servlet:
到http://somedomain/context/path1/path2
的请求将返回..
和http://somedomain/context/path1/path2/path3
请求将返回../..
是否可靠方式的任何一个知道做这个?
TIA
有了新的Java文件系统实用程序(1.7)的Path
relativize(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);
,这种技术是否是可取的,我会离开,向其他人发表评论。
注意,路径不需要在磁盘上存在,并且你还可以声明具有固定根目录的路径,所以Path
像new Path("/servlet/subdir/subdir2")
和Path
像new Path("/servlet")
应该relativize(...)
到Path
像new Path("../..")
.`
为什么不能总是返回'/ context'? – adarshr
我为所有其他链接使用相对URL,并且我在想在这里保持一致。我可能是错的,但那是我的想法。 – BillMan
请勿使用相对链接。至少不是'../','../ ..'类型。始终构建完整的网址。但一定要动态获取上下文,而不是对其进行硬编码。 – adarshr