2010-06-29 18 views
2

我正在開發在JBoss AS 4.2.x.GA應用服務器上運行的Java EE項目(使用EJB3,JSF和maven)。如何重寫jboss上的URL

我想在頁面之間傳遞參數值時重寫我的URL。例如,當用戶點擊提交按鈕時,一些參數被添加到URL的末尾;不過我希望它更清晰一些:

../testApp/testPage/12 instead of ../testApp/testPage.jsf?id=.. 

如何實現這一目標?

回答

2

最常用的Java解決方案是URLRewrite Filter。 新版本的語法看起來非常類似於使用非常廣泛的已知「mod_rewrite」(因爲這是大多數基於apache httpd的服務器使用的)。

您可以找到的文檔和例子還有,許多在谷歌組太的解決方案 - 因爲你提什麼你的問題是一個非常許多應用的共同要求。

另外請注意,您可能需要重寫入站和出站規則(您會在那裏找到示例),因爲URLRewrite Filter無法自動計算重寫表達式的「反向」。

對於通常重寫解決方案,如果用戶對正則表達式不太熟悉,那麼在最喜歡的IDE中安裝某種RegExp插件可以首先嚐試這些重寫表達式(它爲我節省了所有權過去的時間:))。

+0

很多很多謝謝你的回覆, 順便說一句我希望它可以確保urlrewrite過濾器不僅適用於apache,也適用於jboss?我對此感到困惑。我知道Jboss基於Apache的某些功能,但是我不清楚這些,這就是爲什麼我想問。 最好的祝願 – Javatar 2010-06-29 09:47:32

+0

@巴黎燦:我想我不是很精確。當我的意思是Apache時,我的意思是Apache HTTPD Server - 本地(不是基於Java的)流行服務器。另一方面,JBoss基於Apache.org Java項目(這是另一回事)。這是我正在討論的Servlet過濾器,所以按照描述進行配置時,它應該與Java應用程序一起工作。你當然可以在你的Java應用程序前面放置一個Native服務器,並且你可以在那裏放置你的重寫規則,但這對我來說似乎更加複雜。 – 2010-06-29 11:40:49

+0

謝謝。 好吧,我會很高興,如果你也有關於URL重寫字符問題的想法:) 我的意思是,如果我使用非英文字符,它將替換爲像&654這樣的代碼,並且它將不再適用於Google以索引.. – Javatar 2010-06-30 07:23:04