JavaWeb:HttpSession(二)

來源:互聯網
上載者:User

標籤:網站   servlet   car   重複   step   tps   href   form   隱藏   

早上花時間補完最後一點小總結:

1、關於 /:可以代表當前WEB 應用的根目錄,也可以代表WEB 網站的根目錄。

1)、/ 如果交給瀏覽器解析,則代表WEB 網站的根目錄;如果交給WEB 伺服器解析,代表當前WEB 應用的根目錄。

2)、代表當前WEB 應用的根目錄:在web.xml 檔案中,映射路徑;請求的轉寄

   代表當前WEB 網站的根目錄:超連結的 href 屬性;請求的重新導向中的 / 

2、關於絕對路徑:

1)、寫絕對路徑肯定不會有問題,寫相對路徑可能會發生問題。

2)、絕對路徑:相對於當前WEB 應用的路徑。在/ 代表網站根目錄的時候需要在前面加上 contextPath

  例如:<form action="<%= request.getContextPath() %>/processStep1" method="post">

  例如:response.sendRedirect(request.getContextPath() + "/shoppingcart/step2.jsp");

3、表單的重複提交:

1)、重複提交的情況:

①、在表單提交到Servlet 而Servlet又通過請求轉寄的方式響應了一個 JSP 或HTML 頁面,此時地址欄裡還保留著Servlet 的那個路徑,在響應頁面點擊“重新整理”。

②、在響應頁面沒有到達時,重複點擊“提交按鈕”。

③、點擊“返回”,再點擊“提交”。

2)、不是重複提交的情況:

①、點擊“返回”,“重新整理”原表單頁面,再“提交”。

3)、如何避免表單重複提交

在表單中做一個標記,提交到Servlet 時,檢查標記是否存在且是否和預定的標記一樣。若一致,則受理請求,並銷毀標記;若不一致或沒有標記,則直接響應提示資訊:“重複提交”。

標記,僅提供一個隱藏欄位?行不通。因為 清除標記:沒有方法清除固定的請求參數。

把標記放在 request 中?行不通。因為 表單頁面重新整理後,request 已經被銷毀,再提交表單是一個新的 request。

把標記放在 session 中?可以!思路:

  >在原表單頁面,產生一個隨機值token,

  >在原表單頁面把token 值放入 session 屬性中

  > 在原表單頁面,把token 值放入隱藏欄位中

  >在目標的Servlet 中,擷取session 和隱藏欄位中的token 值

  > 比較兩個值是否一致,若一致,受理請求且把session 域中的token 屬性清除,若不一致,則響應提示頁面:重複提交。

over。

JavaWeb:HttpSession(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.