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 "%r" %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