base標籤和JSP宣告變數解決檔案相對路徑和絕對路徑問題
阿新 • • 發佈:2019-01-31
先看需求:同一個專案需要給不同的客戶部署,有的客戶使用windows,有的客戶使用Linux。使用windows的客戶,其使用者檔案是儲存在tomcat的相對路徑下;使用Linux的客戶,其使用者檔案是儲存在一個絕對路徑下。
問題:同一個檔案的顯示,相對路徑能夠顯示,絕對路徑也可以顯示。
解決方案:採用html的base標籤
<base href="http://****/**/" />
.......
.......
<img src="test.gif" /><!-- windows-->
<img src="http://****/**/test.gif" /><!-- linux-->
標籤為頁面上的所有連結規定預設地址或預設目標。
通常情況下,瀏覽器會從當前文件的 URL 中提取相應的元素來填寫相對 URL 中的空白。使用 標籤可以改變這一點。瀏覽器隨後將不再使用當前文件的 URL,而使用指定的基本 URL 來解析所有的相對 URL。這其中包括 、、、 標籤中的 URL。
如果url是絕對的,就不會提取。這樣就解決了相對路勁和絕對路勁的問題。
問題:有許多jsp頁面,每個頁面的base需要統一,但是客戶不同,base的href通常不一樣,就需要整合。
解決方案:採用jsp的宣告變數。
<%@ include file="/views/BasePath.jsp" %>
<!DOCTYPE html>
<html lang="en">
<head>
<base href="<%=basePath%>">
</head>
</html>
BasePath.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath=path+"/" ;
%>
變數basePath在basePath.jsp中宣告,其在include了basePath.jsp的頁面中就可以直接使用。
這樣就解決了整合問題。
最後,我是一枚棒棒的程式猿。