程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> urlrewrite實現JSP的URL重寫

urlrewrite實現JSP的URL重寫

編輯:關於JSP

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&amp;id=$1</to>   </rule>          <outbound-rule>       <from>/zh_CN/NewsInfo.do/?method=view&amp;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&amp;id=$1</to>   </rule>          <outbound-rule>       <from>/zh_CN/NewsInfo.do/?method=view&amp;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或其他服務器需要解析的變量中,這樣才能對其重新顯示

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved