今天我來分享一下,request.getHeader("Referer")獲取上次訪問的URL鏈接,在什麼情況下他會出現問題!
我在某些頁面中,有某幾個按鈕,分別用來跳轉到action.do?method=m 但是,我是用
warpLoaction("url");這個來鏈接過去的,結果,我在火狐浏覽器中,可以正確的
獲取上次訪問的頁面,在IE6下卻獲取不到。後來去網上百度了一下,看到了一哥門的評
說, request.getHeader("Referer")要走HTTP協議才有值,也就是說要通過<a href="url" />
標記,才能獲取到值。當然通過表單提交的也可以。而通過location或是<a href="javascript:window.location=''" />是得不到值的,當時就馬上一行動。果然是那個原因。嘿嘿。
另一個:亂碼問題,如果request.getHeader("Referer")鏈接中帶有中文參數,那麼在經過跳轉的時候,就會出現亂碼,這個時候需要用到String keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");來進行編碼轉換!可是如果不是通過request.getHeader("Referer")鏈接鏈過來的也用keyWords = new String(str.getBytes("ISO-8859-1"),"GBK");來進行編碼轉換的話,就會出現亂碼,我在這裡分享一下我是怎麼解決的,首先,我用str.matches( "[\\u4E00-\\u9FA5]+")來判斷這個字符串中是否有中文,如果沒有中文,則為亂碼或者數字或者英文或者其他符號,那麼我們則進行編碼轉換,如果是中文,則不進行編碼轉換!