JavaWeb 絕對路徑與相對路徑


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文件

 相關推薦:

   路徑問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM