2012-11-15 35 views
0

在我的應用程序中有許多xhtml頁面。當用戶被要求更新其個人資料時,用戶可以看到的第一個頁面被命名爲index.xhtml,它將是updateProfile.xhtml等。當我打開我的應用程序時,我的頁面名稱顯示在URL上。當用戶更新配置文件時,URL將爲http:/myDomain/myServlet/updateProfile.jsf。將頁面名稱形成的URL映射到一個不同的URL

我很想知道它是否可能將我在URL上顯示的所有xhtml頁面名稱映射爲其他名稱。例如,在上述情況下,我希望所有匹配* .jsf模式的URLs以http:/ myDomain/myServlet/myAccount的形式顯示給用戶。

如果最終用戶知道我的頁面名稱,但是我沒有看到可能的威脅,但是仍然沒有關於安全/黑客的很多知識,所以至少我不想在我的URL中顯示* .jsf。因爲,用戶可以知道我在使用JSF。

回答

1

在JavaServer Faces中重寫URL時,您基本上需要一個Filter。在你的情況下,你的重寫可以通過PrettyFaces http://ocpsoft.org/prettyfaces/之類的東西來完成。

使用PrettyFaces,您將能夠配置重寫模式和您需要的一切。

編輯:創建自己的過濾器重定向URL時,還需要創建一個ViewHandler並重寫getActionURL()函數,以便操作將轉到新URL。

+0

這很好理解。你上面提供的鏈接是爲漂亮的面孔。但是,我不使用漂亮的面孔。我正在使用核心JSF標籤('h'和'f')。 _創建自己的Filter來重定向URL_ - 這是我使用Pretty Faces的時候,或者即使在使用核心JSF標籤時我也可以這樣做?你能否提供一個解釋這些步驟的鏈接? –

+0

使用PrettyFaces時,您只能使用基本的JSF(f:和h :)並採用URL映射的附加功能:http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html# config.pathparams。創建自己的過濾器時,需要創建一個實現javax.servlet.Filter的類,並通過註釋或web.xml聲明它,對於ViewHandler也是如此! –

+0

如果我編寫自己的'ViewHandler'並重寫'getActionURL',我應該返回一個String,它是我想要的友好URL。比方說,我將'MyAccounts'作爲友好的URL返回,然後它將嘗試找到'MyAccounts'的映射(否則它將拋出404錯誤)。爲此,如果我在'web.xml'中寫入一個條目並寫入一個'Servlet'映射,那麼'Servlet'中的代碼應該顯示頁面的實際內容,但仍然顯示友好的URL MyAccounts網址? –