一、首先要了解绝对路径和相对路径:
1.绝对路径
绝对路径是指文件在硬盘上真正存在的路径。例如“bbg.jpg”这个图片是存放在硬盘的“E:\books\图片\”目录下,
那么 “bbg.jpg”这个图片的绝对路径就是“E:\book\图片\bbg.jpg"。
那么如果要使用绝对路径指定图片就应该使用 以下语句:
<img src="E:\book\图片\bbg.jpg" >
2.使用绝对路径的缺点
事实上,在网页编程时,很少会使用绝对路径,如果使用“E:\book\图片\bbg.jpg”来指定背景图片的位置,
在自己的计算机上 浏览可能会一切正常,但是上传到Web服务器上浏览就很有可能不会显示图片了。因为上传到Web服务器上时,
可能整个网站并没有放在Web服务器的E盘, 有可能是D盘或H盘。即使放在Web服务器的E盘里,
Web服务器的E盘里也不一定会存在“E:\book\图片”这个目录,因此在浏 览网页时是不会显示图片的。
3.相对路径
为了避免这种情况发生,通常在网页里指定文件时,都会选择使用相对路径。所谓相对路径,就是相对于自己的目标文件位置。
例如上面的例子,“read.htm” 文件里引用了“bbg.jpg”图片,由于“bbg.jpg”图片相对于“read.htm”来说,是在同一个目录的,
那么要在“read.htm”文件里使用以下代 码后,只要这两个文件的相对位置没有变(也就是说还是在同一个目录内),
那么无论上传到Web服务器的哪个位置,在浏览器里都能正确地显示图片。
<img src="bbg.jpg">
注意:相对路径使用“/”字符作为目录的分隔字符,而绝对路径可以使用“\”或“/”字符作为目录的分隔字符。
二、request.getContextPath()、request.getServletPath()、 request.getRequestURI()、request.getRealPath("/")的区别
假定你的web工程名字为news,那么你在浏览器中输入请求路径:http://localhost:8080/news/main/list.jsp
1、 System.out.println(request.getContextPath());
打印结果:/news
2、 System.out.println(request.getServletPath());
打印结果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
打印结果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/"));
打印结果:F:\Tomcat 6.0\webapps\news\test
总结:我最常见到的是request.getContextPath(),它是在开发Web项目时,经常用到的方法,其作用是获取当前的系统路径。
值得注意的是,我们在做传值的时候经常会遇到此类的路径问题,导致页面跳转不了或者值无法传递。