JavaWeb 路徑問題

路徑問題

CreateTime--2016年9月22日15:19:56

Author:Marydon

1、jsp頁面
  src="../demo/clazz/clazz_add.js"與src="<c:url value='/demo/clazz/clazz_index.js'/>"
  鏈接的文件路徑是一致的,一個相對路徑,一個是絕對路徑
2、struts2配置文件javascript

<package name="clazz" namespace="/clazz" extends="default">
    <action name="index" class="clazzAction" method="index">
        <result name="success">demo/clazz/clazz_index.jsp</result>
    </action>
</package>

  跳轉路徑爲:
    /demo/clazz/demo/clazz/clazz_index.jsp
  表示的是:到當前項目下找clazz文件夾下的demo文件夾下的clazz文件夾下的demo文件夾下的clazz文件夾下的clazz_index.jsp
  加上/後,css

<result name="success">/demo/clazz/clazz_index.jsp</result>

  跳轉路徑爲:localhost:8080/demo/demo/clazz/clazz_index.jsp
  加上"/"表示,訪問路徑會忽略掉namespace;
  說明:若是訪問路徑不須要加上namespace,則在跳轉頁面前加"/";通常都要加"/"
  請求路徑爲:clazz/index.do(index.action)
  重定向問號傳參${}
3、協議-端口號-路徑html

request.getContextPath();   //獲取項目根路徑:/test
request.getScheme();     //協議名稱:http
request.getServerName()   //域名:localhost
request.getServerPort()   //服務器端口號:8080
<%
    String path = request.getContextPath();<%-- 一般用的是這個 --%>
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>    

  path = "/test";
  basePath = "http://localhost:8080/test"
4、使用<c:url></c:url>表示路徑java

<c:url value=''></c:url>     <!-- 什麼也不顯示 --><br>
<c:url value='/'></c:url>     <!-- /test/ --><br>表明的是項目名
<c:url value='/index.jsp'></c:url>    <!-- /test/index.jsp -->

UpdateTime--2017年6月2日08:25:55web

6、WEB項目找不到對應的js文件 ajax

  使用絕對路徑來引用js文件:json

<script type="text/javascript" src="<c:url value="/telemedicine/remoteRese/consAppl/viewAdd_search.js"/>"></script>    

  而不是用相對路徑tomcat

<script type="text/javascript" src="viewAdd_search.js"></script>

7、WEB項目找不到對應的圖片服務器

  使用絕對路徑jsp

    方式一:使用<c:url></c:url>標籤體

<img src="<c:url value="/telemedicine/remoteRese/consAppl/image/cxlr.png"></c:url>"/>

    方式二:使用小腳本

<img src="<%=request.getContextPath()%>/telemedicine/remoteRese/consAppl/image/cxlr.png"/>

  而不是使用相對路徑

<img src="image/cxlr.png"/>

UpdateTime--2017年8月18日15:30:09

8、相對路徑與絕對路徑

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

 

9、網址最後加「/"與不加"/"的區別

參考地址:http://bbs.csdn.net/topics/340200371   

  1.http://www.abc.com/abc
  2.http://www.abc.com/abc/
區別:
  對於用戶來講,在大多數狀況下這兩個網址沒有任何區別,他們訪問的都是網站abc目錄下的默認首頁。通常用戶也都知道最後一個斜槓是無關緊要的,他們輸入網址的時候通常都只會輸入http://www.abc.com/abc。
  當Web服務器接收到對某個末尾不含斜槓的url請求時,例如「http://www.abc.com/abc」,這時服務器會搜索網站根目錄下有沒有名爲「abc」的文件,若是沒有就把abc當作目錄處理,而後返回abc目錄下的默認首頁。當Web服務器接收到的是末尾帶斜槓的請求時就會直接當作目錄處理。

 

 相關推薦:

   JavaWeb 絕對路徑與相對路徑

相關文章
相關標籤/搜索