2010-07-06 51 views
2

我用很多規則設置了UrlRewriterFilter(Tuckey),它對我的​​servlet非常有用。但是我想使用相同的配置來重寫servlet之外的URL - 在使用url生成電子郵件的代碼中。因此,我需要以某種方式啓動UrlRewriter(或某種包裝)來處理傳出網址,即使用已在config(urlrewrite.xml)中定義的出站規則重寫它們。是否可以在Java中使用UrlRewriter外部的servlet和過濾器?

我想使用它,就像這樣:

String prettyUrl = urlRewriter.rewriteOutgoingUrl(uglyUrl); 

這是可能的呢?如何實現這個目標?

+0

我處於類似的情況。你介意發佈你的解決方案,因爲它看起來並不重要。 – Zoran 2012-11-27 23:34:13

回答

0

您可能只需要初始化UrlRewriteFilter。既然你必須在你的web.xml文件中添加這個文件,UrlRewriteFilter配置文件通常會被加載一次。我會嘗試在你定義的一些包裝類中的靜態初始化器中加載它。要定義一個類中靜態初始化所有你需要做的是有以下幾點:

static { 
    //Your initialization code goes here 
} 

這個代碼將只在運行時初始化一次。欲瞭解更多信息,請看這裏: http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

+0

但UrlRewriteFilter適用於請求/響應和servlet環境的整個剩餘部分,如何應對這種情況?我應該傳遞什麼來過濾,而不是由servlet容器構造的請求/響應對象? – WildWezyr 2010-07-06 11:54:40

0

它是開源。您可以查看它的源代碼(http://code.google.com/p/urlrewritefilter/source/browse/trunk/src/java/org/tuckey/web/filters/urlrewrite/UrlRewriteFilter.java),並查看是否可以在不依賴於servlet請求/響應對象的獨立類中使用該邏輯。如果是這樣,就使用它。否則,您可以基於原始來源自行構建它,儘可能多地重用庫。

+0

我已經下載了這段代碼並進行了審查。它有太多的引用請求和響應對象,不能在獨立的環境中使用,就像那樣 - 沒有大量嘲諷等。 但我也設法使我自己的UrlRewriter能夠識別Tuckey的規則(來自urlrewrite.xml) 。我的代碼長約100行,完全獨立於Servlet API(即請求/響應對象)。 – WildWezyr 2010-07-27 13:03:55

+0

對不起,我打算在此發佈上述評論。我真的很感激,如果你可以分享你的代碼,因爲我想實現類似的東西。 – Zoran 2012-11-27 23:37:37

相關問題