由於一直使用的jfinal,沒感受路徑問題。javascript
舉個栗子,項目名字叫作test.訪問一個Controller的映射爲/user/add.這樣,在瀏覽器地址欄直接:localhost:8080/user/add就能夠直接訪問到add方法了。固然,這樣須要經過配置不一樣的端口來發布不一樣的項目,否則確定衝突了。端口指定項目的路徑。html
好比:java
<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" />jquery
</Host>web
而以前學的ssh以及springmvc等,在tomcat中須要經過項目名識別項目。即localhost:8080/test/user/add。spring
這是由於:在jfinal中默認項目路徑爲/,而後項目中全部的路徑都是相對項目的,即相對於test.apache
因此,對於靜態資源,web頁面的引用js和img能夠把webroot看作是/,好比圖片位於webroot/img/1.jpg.在頁面引用:/img/1.jpg.瀏覽器訪問:localhost:8080/img/1/jpg.瀏覽器
對於服務請求接口,直接:/user/add.瀏覽器訪問:localhost:8080/user/add.tomcat
/表明的是webapps。即tomcat中發佈的默認根路徑。bash
全部的請求(靜態資源也是請求)都要/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>
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