JavaWeb 絕對路徑與相對路徑
CreateTime--2018年4月14日16:51:19
Author:Marydon
8.1 絕對路徑
web項目不可能使用絕對路徑,因為:
以文件的引用為例,tomcat會將項目發布到webApps文件夾下,所以文件的引用不能使用文件所在的磁盤位置
8.2 相對路徑
情況一:嚴格意義上的相對路徑
在頁面上用來表示路徑的任何HTML標簽的已知屬性,都必須使用這種路徑引用方式:"/" + 應用程序名稱" + "相對於WebContent/WebRoot"的路徑;
8.2.1 引入CSS文件
<link type="text/css" rel="stylesheet" href="<c:url value="/telemedicine/remoteRese/consAppl/entry.css"/>" />
8.2.2 引入js文件
<script type="text/javascript" src="<c:url value="/telemedicine/remoteRese/consAlready/consAleady_index.js"/>"></script>
8.2.3 a標簽跳轉頁面
<a style="color: #199ED8;" href="${pageContext.request.contextPath }/telemedicine/reseCons/index.do?RESULT_TYPE=modelAndView1&PATIENT_ID=${row.PATIENT_INFO_ID }&ORG_ID=${row.ORG_ID }&CONSULT_APPLY_ID=${row.CONSULT_APPLY_ID }&CONSULT_STATUS=${row.CONSULT_STATUS }"> 查看詳細信息 </a>
8.2.4 img標簽
<img src="<%=request.getContextPath()%>/telemedicine/remoteRese/consAppl/image/cxlr.png">
8.2.5 發送Ajax請求
第一步:
<script type="text/javascript">var baseUrl="<%=request.getContextPath()%>";</script>
第二步:
$.ajax({ type:"post", url: baseUrl + "/telemedicinet/consult/add.do", data:{CONSULT_DEPENT_ID:CONSULT_DEPENT_ID,CONSULT_DEPENT:CONSULT_DEPENT,CONSULT_DOCTOR_ID:CONSULT_DOCTOR_ID,CONSULT_DOCTOR:CONSULT_DOCTOR,DOCTOR_PHONE:DOCTOR_PHONE, CONSULT_APPLY_ID:CONSULT_APPLY_ID}, success: function(result) { DEPENT_DOCTOR_INFO_ID = result.id; message = result.msg + "," + DEPENT_DOCTOR_INFO_ID; }, dataType: "json" });
8.2.6 提交form表單
小結:
為什么8.2.1-8.2.5這五種情況必須要使用"/" + 應用程序名稱" + "相對於WebContent/WebRoot"的路徑?
a.請求路徑和響應的頁面所在的路徑並不一定一致;
請求路徑:
返回的文件所在路徑:
其一,請求路徑為:"http://127.0.0.1:8060/ycyl/telemedicine/patient/index.do?RESULT_TYPE=modelAndView1",響應的內容所在路徑為:"/telemedicine/remoteRese/consAlready/consAleady_records.jsp";
其二,響應方式設置成了轉發,而使用轉發,URL不會發生變化(因為客戶端只發送了一次請求)。
小結:
請求路徑與響應路徑不一致並且使用轉發,兩個條件同時滿足時,必須使用嚴格意義上的相對路徑。
b.這些標簽表示路徑的屬性所共有特性:會自動為其補全路徑;
補全方式:
在響應的頁面標簽上
第一種:表示路徑屬性的值(不加"/")自動在前面追加當前的請求前綴, 如:"http://127.0.0.1:8060/ycyl/telemedicine/patient"
第二種:自動在前面追加當前服務器前綴(加"/"),如:"http://localhost:8080"
c.為什么要加"/"?
表示路徑屬性的值不加"/",會出現b中的第一種情況;表示路徑屬性的值加"/",會出現b中的第二種情況。
在a和b的作用下,只能選擇加"/",這種方式,我們對於路徑定義有更大的自由權
d.為什么要加上“引用程序名稱”?
不加上發布在服務器上的應用程序的名稱,就更不用說訪問該程序下的內容了。
e.form表單提交路徑
form表單的提交通常是在當期路徑上進行提交,當然,如果要提交的路徑和當前請求路徑不一致時,需使用嚴格意義上的相對路徑。
更多示例見文章:a標簽
情況二:非嚴格意義上的相對路徑
include標簽引用文件或外部css文件引用圖片所在路徑時,
如果同級直接寫被引用文件的全稱;如果是下級文件,”下級文件夾/被引用文件的全稱“;如果是上級文件夾,”上級文件夾/被引用文件的全稱“。
圖例:
jsp:include標簽
外部CSS文件