posts - 262,  comments - 221,  trackbacks - 0

          一、Forward與Redirect與<a href >的路徑區(qū)別

          forward的路徑如果是以"/"開頭,則表示相對(duì)Web應(yīng)用的context, 如果不是則表示相對(duì)于當(dāng)前請(qǐng)求
          redirect的路徑如果是以"/"開頭,則表示相對(duì)于主機(jī), 如果不是則表示相對(duì)于當(dāng)前請(qǐng)求
          <a href>的路徑如果是"/"開頭,則表示相對(duì)于主機(jī),如果不是則表示相對(duì)于當(dāng)前請(qǐng)求

          二、Forward與Redirect對(duì)HTML鏈接的影響

          最近在寫一個(gè)JSP頁面時(shí),碰到一個(gè)奇怪的問題,有一個(gè)頁面(forward_from.jsp)根據(jù)一個(gè)隨機(jī)數(shù)選擇“轉(zhuǎn)發(fā)”或“重定向”到第二個(gè)頁面(forward_result.jsp),在第二個(gè)頁面有一個(gè)返回的鏈接:<a href = "../forward_from.jsp">。

          測(cè)試時(shí)發(fā)現(xiàn)如果第一個(gè)頁面是“重定向”到第二個(gè)頁面的,則當(dāng)用戶點(diǎn)擊第二個(gè)頁面的返回鏈接時(shí)一切正常,當(dāng)如果是以“轉(zhuǎn)發(fā)”的方式訪問第二個(gè)頁面,當(dāng)用戶點(diǎn)擊返回鏈接會(huì)出現(xiàn)“404: File not found”的錯(cuò)誤。

          ·頁面結(jié)構(gòu)




          當(dāng)從forward_from.jsp“重定向”到forward_result.jsp時(shí),瀏覽器的地址欄的URL是:

          http://localhost:8081/j2eeTestProject/pages/forward/forward_result.jsp

          當(dāng)從forward_from.jsp“轉(zhuǎn)發(fā)”到forward_result.jsp時(shí),瀏覽器的地址欄的URL是:

          http://localhost:8081/j2eeTestProject/pages/forward_from.jsp


          當(dāng)從forward_from.jsp“重定向”到forward_result.jsp時(shí),forward_result.jsp頁面的返回鏈接<a href = "../forward_from.jsp">是:

          http://localhost:8081/j2eeTestProject/pages/forward_from.jsp

          當(dāng)從forward_from.jsp“轉(zhuǎn)發(fā)”到forward_result.jsp時(shí),forward_result.jsp頁面的返回鏈接<a href ="../forward_from.jsp">是:

          http://localhost:8081/j2eeTestProject/forward_from.jsp

          從上面的瀏覽器URL和頁面的鏈接寫法我們就可以看出問題所在,因?yàn)?lt;a href = "../forward_result.jsp">參考的是Web瀏覽器中地址欄的URL,當(dāng)“轉(zhuǎn)發(fā)”時(shí)因?yàn)闉g覽器的URL地址保持不變,所以“../”就被瀏覽器解析成:/j2eeTestProject/,而“重發(fā)”時(shí)因?yàn)闉g覽器的URL地址是真正頁面的地址(/pages/forward/forward_result.jsp),所以../被瀏覽器解析成:/j2eeTestProject/pages/。而這個(gè)路徑顯然是不存在的。

          總結(jié):以后在JSP中盡量不要使用"../"這樣的寫法,我們可以使用request.getServletContext()或request.getServletPath()來定位到Web應(yīng)用的根目錄或當(dāng)前的請(qǐng)求對(duì)象。



          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-01-15 23:28 Paul Lin 閱讀(831) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE基礎(chǔ)
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 孟村| 合水县| 神农架林区| 南丰县| 新巴尔虎右旗| 沂南县| 兴化市| 特克斯县| 舞阳县| 共和县| 镇江市| 孟州市| 鲁甸县| 隆尧县| 北宁市| 兴仁县| 孝感市| 色达县| 栖霞市| 桓台县| 巴林左旗| 朔州市| 凤城市| 兴安盟| 同心县| 雷州市| 铁岭市| 仪陇县| 镇赉县| 武功县| 永嘉县| 利川市| 运城市| 连州市| 北京市| 木兰县| 惠安县| 焦作市| 石门县| 克拉玛依市| 兴文县|