Spring MVC中關於重定向的路徑問題
阿新 • • 發佈:2019-02-06
- 需求描述
使用者登入以後,點選“退出”按鈕發起退出請求,伺服器端接收到資訊後清除登入標記,然後redirect到主頁。 - 正確用法
(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>不論運用重定向還是請求轉發,給出的相對路徑的都是相對於瀏覽器當前目錄的。