寫在前面
在實際項目中,我們將訪問與後臺約定的url地址進行訪問系統,比如:http://localhost:9090/index.jsp、http://localhost:9090/idcAccessRoom/launchApplication 等。但在有的情況下,比如http://localhost:9090/idcAccessRoom/launchApplication這個請求提供給"他人"訪問,“他人”覺得這個url地址"不好看"、“太長”、"太醜"等各種不使用這個URL,又或者說,這個url地址是我們業務上安全度非常高的,不允許把該地址暴露給外人。在不改現有代碼的情況下,提供一個“他人”喜歡用的URL呢?使用“UrlRewriteFilter”,官網:http://tuckey.org/urlrewrite/
注:參考博文:Java 之Filter 應用實例–強大的UrlRewriteFilter
UrlRewriteFilter
適用於任何兼容的Web應用程序服務器(如Tomcat, JBoss, Jetty或 Resin)的Java Web Filter ,它允許您在訪問代碼之前重寫URL。它就像Apache的mod_rewrite一樣非常強大。
https://github.com/paultuckey/urlrewritefilter
http://tuckey.org/urlrewrite/
基本使用
- 添加
urlrewritefilter-4.0.4.jar
到WEB-INF/lib
或者添加maven依賴:
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.4</version>
</dependency>
- 在
WEB-INF/web.xml
中配置過濾器:
<!-- urlRewrite即地址重寫,用戶得到的全部都是經過處理後的URL地址。將我們的動態網頁地址轉化爲靜態的地址,如html、shtml,還可以隱藏網頁的真正路徑。此外還可以用來做地址映射。 -->
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
- 增加
urlrewrite.xml
到WEB-INF/
中,並定義規則:
注: maven項目增加到src/main/webapp/WEB-INF/
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<rule>
<note>登錄重寫地址,其中form爲訪問地址,to爲實際隱藏地址</note>
<from>/lg</from>
<to>/pwb/pwb-henan/bdf/jsf/login.xhtml</to>
</rule>
<rule>
<note>登錄後主界面重寫地址,其中form爲訪問地址,to爲實際隱藏地址</note>
<from>/main</from>
<to>/pwb/pwb-henan/idcHome/welcome.jsp</to>
</rule>
</urlrewrite>
- 重新啓動應用
可以訪問:http://127.0.0.1:8080/rewrite-status (或您本地Web應用程序和上下文的任何地址)查看重定向規則輸出。