我正計劃一個URL重寫器/編碼器(也許重寫器是一個更好的術語)。主要目的是從客戶端隱藏確切的URL,因爲如果他足夠聰明,他可以弄清楚如何搞砸應用程序。URL編碼的設計解決方案
URL編碼器將是一個內射函數f(x) = y
。解碼器將是f的反函數,比如g,使得g(y) = x
。這樣我可以編碼和解碼我的網址。
的URL,如:
http://www.myapp.com/servlet/myapp/template/MyScreen.vm/action/MyAction 將被編碼爲類似:
http://www.myapp.com/uyatsd6787asv6dyuasgbdxuasydgb876876v
不要緊,什麼是在編碼的URL,只要它是不理解。
問題是我不知道如何操作瀏覽器顯示的URL。我將JBoss用作servlet容器,並將Turbine servlet用作Web應用程序框架。 我需要一個接收編碼的URL,解碼它,將它傳遞給Turbine的模塊,然後修改響應的URL以再次顯示編碼的URL。
以前曾試圖解決這個問題: 我創建了一個Servlet過濾器,但由於濾波器接收一個ServletRequest是一個JBoss實現我無法訪問URL。據我看來,似乎servlet過濾器不是一個好的選擇來操縱URL。
着如果我在內部解碼後的URL會的瀏覽器中的URL仍然是原始的(編碼的)? – Atticus 2010-09-15 13:39:51
瀏覽器的URL應該保持不變,因爲您的serlvet正在內部轉發,而不是將重定向發回給用戶。 – worpet 2010-09-15 16:01:02
這似乎是一個很好的解決方案,但是你必須創建一個新的請求,因爲在第一次請求之後,Turbine servlet將知道它的url模式,並且所有鏈接都將指向Turbine servlet。因此,您必須創建一個新的包裝請求來重寫getServletPath()方法,以返回新的讓我們說過濾器servlet的url模式,它將請求轉發到正確的目標。 – Atticus 2010-09-16 08:27:39