1. 程式人生 > >Spring MVC中關於重定向的路徑問題

Spring MVC中關於重定向的路徑問題

  1. 需求描述
    使用者登入以後,點選“退出”按鈕發起退出請求,伺服器端接收到資訊後清除登入標記,然後redirect到主頁。
  2. 正確用法
    (1)JSP頁面
    首頁
    這裡寫圖片描述
    登入頁
    這裡寫圖片描述
    登入成功的首頁
    這裡寫圖片描述
    (2)判斷登入成功與否的程式碼段
<c:set var="len" value= "${fn:length(requestScope.user.loginId)}"  scope="session"></c:set>
<form class="navbar-form navbar-right" action="/login/logout" method="post"
id="formid">
<c:if test="${ len eq 0 }" var="result"> <button type="button" class="btn btn-default" onclick="skip('log.html')">登入</button> <button type="button" class="btn btn-default" onclick="skip('reg.html')">註冊</button
>
</c:if> <c:if test="${ len ne 0 }"> <c:out value="${sessionScope.user.loginId }"></c:out>,歡迎您! <!-- <input type="hidden" id="exit" name="act" value="exit"/> --> <button
type="submit" class="btn btn-default" onclick="document.getElementById('formid').submit()">
退出</button> </c:if> </form>

(3)登入模組處理器
這裡寫圖片描述
(4)注意事項
重定向要給出全路徑,路徑包含專案名。
3、在此實踐中的一些錯誤嘗試
首先展示一下,登入前、登入中、登入後瀏覽器路徑欄的變化。
登入前
登入中
登入後
(1)若將①處改為viewname=”index”
點選”退出”後的結果為:
這裡寫圖片描述
(2)若將①處改為viewname=”redirect:index”
點選”退出”後的結果為:
這裡寫圖片描述
(3)若將①處改為viewname=”redirect:/index”
這裡寫圖片描述

由以上實踐得出兩條結論:
1>運用重定向一定要給出全路徑
2>不論運用重定向還是請求轉發,給出的相對路徑的都是相對於瀏覽器當前目錄的。