在j2ee项目中我们经常会遇到”"",而且这个斜杠总是让我们摸不清头脑,这是为什么呢?我们只需要理解它们各自的作用就很容易记住了。
先说它们各自的含义
1.在java代码中:以”/“开头的时候,它表示的含义是当前项目的跟根目录。
2.在配置文件中:以”/“开头的时候,它表示的含义是当前项目的跟根目录。
3.在html文件中:以”/“开头表示的是当前的tomcat根目录,就是此项目的上一级目录。
解释:
1.在java文件中因为类和类之间如果进行引用的话使用的根本就不是路径而是包名.类名
所以这种情况下不会涉及到路径的问题,如果涉及到了话那么就应该是对src包之外的文
件的访问,既然如此那么肯定就是对于项目下面的文件的访问了,因为我们要考虑的是
当项目发布的时候各个文件之间的位置,当项目发布的时候,我们的项目里面是没有
WebRoot这个目录的,它的存在只是为了让我们更好的组织我们的代码,让我的代码看
起来更具有条理性,让我们的web工程看起来前台和后台区别很鲜明开而已,没有实际
意义,所以java代码里面的”/“代表的就是当前的项目的根路径。
2.在配置文件中,比如在struts.xml文件中,”/“它代表的也是当前项目的跟路径,因为
struts.xml这个文件是做什么用的呢?它的作用就是处理当前项目的请求的,理所当然”/“
应该代表的是当前的项目的根路径,假如说它代表的含义还是此项目的上一级目录,那
岂不是太令人笑话了,我们每一次还要把自己的当前项目的名称写进去一遍,简直就是
脑残,所以它肯定也是代表的当前项目的根目录。
3.在html文件中,比如在<a href="/"></a>中,”/”代表的是当前应用的根路径,为什么呢?
假如说“/”代表的不是当前应用的路径,而是当前项目的根路径,那么我们可以想象一下
正常情况下我们访问一个文件的方式是:
http://localhost:8080/Struts2UpAndDownLoadFile/download.jsp
如果我们的超链接为<a href="/UpAndDownLoadFile/download.jsp">测试<a/>
那么实际到了浏览器显示的时候该显示成为什么样呢?
显示为:
http://localhost:8080/Struts2UpAndDownLoadFile/Struts2UpAndDownLoadFile/download.jsp
那么这样的文件我们的tomcat能访问到吗?很显然不可能访问到的。
所以我们的html里面的“/”应该代表的是tomcat容器的根目录,这样我们在使用
<a href="/UpAndDownLoadFile/download.jsp">测试<a/>时,浏览器地址才会显示为
http://localhost:8080/Struts2UpAndDownLoadFile/download.jsp才是我们所需要的。