web項目中,視圖層中關於相對路徑和絕對路徑


1.在jfinal項目中

  因為一直使用的jfinal,沒感覺路徑問題。

  舉個栗子,項目名字叫做test.訪問一個Controller的映射為/user/add.這樣,在瀏覽器地址欄直接:localhost:8080/user/add就可以直接訪問到add方法了。當然,這樣需要通過配置不同的端口來發布不同的項目,不然肯定沖突了。端口指定項目的路徑。

比如:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="test" reloadable="true" /> 

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 </Host>

 

  而之前學的ssh以及springmvc等,在tomcat中需要通過項目名識別項目。即localhost:8080/test/user/add。

  這是因為在jfinal中默認項目路徑為/,然后項目中所有的路徑都是相對項目的,即相對於test.

  所以,對於靜態資源,web頁面的引用js和img可以把webroot看做是/,比如圖片位於webroot/img/1.jpg.在頁面引用:/img/1.jpg.瀏覽器訪問:localhost:8080/img/1/jpg.

     對於服務請求接口,直接:/user/add.瀏覽器訪問:localhost:8080/user/add.

2.一些測試

  /代表的是webapps。即tomcat中發布的默認根路徑。

  所有的請求(靜態資源也是請求)都要/test/請求相對於項目的路徑。

  在html中:

      靜態資源:等測試后再寫,TODO--

  在jsp中:

      今天學習springmvc中,測試結果:

      靜態資源:需要相對路徑或者相對於項目路徑或者絕對路徑。舉例:

  • 絕對路徑:            
1 <!-- 關於路徑問題:/表示tomcat的webapps文件夾。如果/js/jq.js,控制台顯示找不到localhost:8080/js/....肯定找不到,因為應該是test/js下的
2         可以使用相對路徑,這里因為設置了bashPath,就是項目即test,所以頁面直接寫相對於項目的路徑,即:js/jq.....
3      -->
4   <script type="text/javascript" src="/test/js/jquery-1.8.2.min.js"></script>

 

  • 相對路徑直接相對於本jsp的位置寫就可以了。這個在涉及動態跳轉就會失效。不可以。
  • 正常使用的是相對於項目路徑,即在head處:
 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
12   </head>
13 <body></body>
14 </html>

    接口請求:

        同理,和靜態資源加載一樣,采用絕對路徑的時候可以/test/user/add.

        推薦以及通常使用:在head出天價base標簽,然后就可以這樣請求接口:user/add

 


免責聲明!

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



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