urlrewrite顧名思義,就是對URL進行重寫,用戶得到的全部都是經過處理後的URL地址,這樣做我覺得好處有三: 一:提高安全性,可以有效的避免一些參數名、ID等完全暴露在用戶面前,如果用戶隨便亂輸的話,不符合規則的話直接會返回個404或錯誤頁面,這比直接返回500或一大堆服務器錯誤信息要好的多 二:美化URL,去除了那些比如*.do之類的後綴名、長長的參數串等,可以自己組織精簡更能反映訪問模塊內容的URL 三:更有利於搜索引擎的收入,通過對URL的一些優化,可以使搜索引擎更好的識別與收錄網站的信息 使用urlrewrite的步驟如下: 其次,在web.xml中加入如下配置: [xhtml] <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> [xhtml] <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 其實,urlrewrite其實就是個過慮器,它將會過慮用戶的所有請求,符合規則的便對其進行重定向,具體的配置參數的使用方法見官方文檔:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html 配置好web.xml後將下載的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目錄下,這樣在使用urlrewritefilter時它便自動到該目錄下讀取相關的配置了,我配置了個簡單的,代碼如下: [xhtml] <rule> <from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from> <to>/zh_CN/NewsInfo/view.do?method=view&id=$1</to> </rule> <outbound-rule> <from>/zh_CN/NewsInfo.do/?method=view&id=([0-9]+)$</from> <to>/zh_CN/NewsInfo/NEWS_$1</to> </outbound-rule> [xhtml] <rule> <from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from> <to>/zh_CN/NewsInfo/view.do?method=view&id=$1</to> </rule> <outbound-rule> <from>/zh_CN/NewsInfo.do/?method=view&id=([0-9]+)$</from> <to>/zh_CN/NewsInfo/NEWS_$1</to> </outbound-rule> rule結點中form的規則默認使用的是正則表達式來匹配的,當用戶訪問服務器時的URL會與該配置相比較,如果符合規則就會按照下面to結點中的配置對其進行跳轉,其默認是forward跳轉,具體配置可見官網文檔。 outbound-rule結點是服務器解析後的頁面URL對外表現的形式,配置與上面的大體相同,如我一新聞鏈接代碼在JSP中書寫的形式如下: [xhtml] <c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" /> <li>· <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></li> [xhtml] view plaincopy <c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" /> <li>· <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></li> 經服務器解析後,最終顯示在頁面中的將變成: [xhtml] <li>· <a href="/項目名/zh_CN/NewsInfo/NEWS_9999" mce_href="項目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新聞標題</a></li> [xhtml] view plaincopy <li>· <a href="/項目名/zh_CN/NewsInfo/NEWS_9999" mce_href="項目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新聞標題</a></li> urlrewrite實現JSP的URL重寫 當用戶點擊此鏈接後urlrewrite便用通過rule的配置重跳轉到真正的訪問地址,這樣便很好的隱藏了真實地址 需要轉化的鏈接不能直接寫在a標簽中,需要寫在c:url或其他服務器需要解析的變量中,這樣才能對其重新顯示