首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP 獲取原始請求 URL:request.getRequestURL() vs JS document.URL 選型指南

     編輯:程式設計綜合問答

問題場景

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
手動拼接易出錯不推薦

最佳實踐:組合獲取完整 URL 含參數

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>

選型建議

  • 後端邏輯需 URL:用 request.getRequestURL() + getQueryString()
  • 前端展示/埋點:直接用 document.URL,無需後端傳遞
  • 轉發鏈場景:原始請求 URL 保存在 request.getAttribute("javax.servlet.forward.request_uri") 等屬性中

JSP 內部轉發 (forward) 會改變 request.getRequestURI(),但 getRequestURL() 始終反映瀏覽器地址欄 URL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved