JSP 頁面需獲取用戶瀏覽器地址欄顯示的完整 URL(如 127.0.0.1:8080/test/content/content.action),而非服務器內部轉發路徑(/test/web-inf/view/content.jsp)。
| 方法 | 返回值示例 | 適用性 |
|---|---|---|
| request.getRequestURL() | https://127.0.0.1:8080/test/content/content.action | 推薦:直接獲取客戶端請求 URL,不含查詢串 |
| request.getRequestURI() | /test/content/content.action | 僅路徑,無協議域名端口 |
| request.getServletPath() | /content/content.action | 去除 contextPath |
| 手動拼接 | 易出錯 | 不推薦 |
String fullUrl = request.getRequestURL().toString();
String queryString = request.getQueryString();
if (queryString != null) {
fullUrl += "?" + queryString;
}
// 结果: https://127.0.0.1:8080/test/content/content.action?param=value
<script>
var originalUrl = document.URL; // 或 window.location.href
// 可通過隱藏域提交給後端,或直接前端使用
</script>
request.getRequestURL() + getQueryString()document.URL,無需後端傳遞request.getAttribute("javax.servlet.forward.request_uri") 等屬性中JSP 內部轉發 (forward) 會改變 request.getRequestURI(),但 getRequestURL() 始終反映瀏覽器地址欄 URL。