1. 程式人生 > >base標籤和JSP宣告變數解決檔案相對路徑和絕對路徑問題

base標籤和JSP宣告變數解決檔案相對路徑和絕對路徑問題

先看需求:同一個專案需要給不同的客戶部署,有的客戶使用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的頁面中就可以直接使用。

這樣就解決了整合問題。

最後,我是一枚棒棒的程式猿。