response.sendRedirect(url)response.setHeader("Location", url)<jsp:forward page="..." /> 或 request.getRequestDispatcher(...).forward()| 特性 | sendRedirect | setHeader(Location) | forward |
|---|---|---|---|
前方不可有 out.flush() | 是(拋 IllegalStateException) | 是(頁面不跳轉) | 是(拋 IllegalStateException) |
| 瀏覽器網址列變化 | 是 | 是 | 否(維持原 URL) |
| 跨主機跳轉 | 支援 | 支援 | 不支援(同一 Web 容器內) |
| 後續代碼執行時機 | 不同主機:似新執行緒繼續;同主機:執行完才跳轉 | 執行完才跳轉 | 執行完才跳轉 |
| Response 操作有效性 | 跳轉後無效 | 跳轉後無效 | 跳轉前有效 |
response.setStatus(302))。request.setAttribute)。forward。sendRedirect。sendRedirect 後緊接 return,防止後續邏輯干擾。