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

Java Web 相對路徑與 <base> 標簽深度解析

     編輯:程式設計疑難解答

問題場景

JSP 頁面中 <base href="..."> 設置後,表單 action="user/user!add" 為何能正確解析為 https://localhost:8080/project/user/user!add?

<base> 標簽作用

  • 為頁面所有相對鏈接(<a>, <form>, <img>, <link>, <script> 等)指定基準 URL。
  • 只能出現在 <head> 中,全文檔僅生效一個。

解析規則

  1. 若鏈接以 / 開頭 → 相對於域名根(如 /user/add → https://host/user/add)。
  2. 若鏈接以 ./ 或無前綴 → 相對於 <base> href 指定的目錄。
  3. 若鏈接包含協議(https://) → 視為絕對路徑,忽略 base。

實戰示例

<head>
  <base href="https://localhost:8080/struts2015/">
</head>
<body>
  <form action="user/user!add">  <!-- 實際提交到 https://localhost:8080/struts2015/user/user!add -->
  <img src="images/logo.png">   <!-- 請求 https://localhost:8080/struts2015/images/logo.png -->
</body>

最佳實踐

  • 統一在過濾器或 JSP 通用片段中動態輸出 <base>,避免硬編碼。
  • RESTful API 建議使用絕對路徑(/api/...),不依賴 base。
  • 注意:<base> 會影響錨點跳轉(#section),需在錨點前加完整路徑。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved