由于一直使用的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