我想創建一個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