Java Web中相对路径与绝对路径的分析
一、相对路径与绝对路径
1、相对路径:
相对路径指的是相对于当前文件所在目录的路径!
相对路径易出问题:
当在页面间相互跳转时不会产生问题;
当从Servlet中转发到指定页面时,服务器会相对于当前Servlet所在位置,而不是访问Servlet的页面的路径,也就是相对于当前项目的根目录,
当页面位于WebContent的子目录下时,会产生错误。
2、 绝对路径:
绝对路径是以/开头表示的
浏览器解析时,/代表http://localhost:8080/【服务器的根目录】
服务器解析时,/代表 http://localhost:8080/项目名/ 【项目的根目录】
1)常见的路径:
url-pattern:
转发的路径:
这两个路径都是由服务器端解析,/代表项目的根目录
重定向的路径
页面中的路径
这两个路径都是由浏览器端解析,/代表服务器的根目录
相关知识:
java web项目发布时,其实只将WebContent文件夹部署到服务器上,并将文件夹名WebContent改为项目名,java源代码并不发布,而是运行存放在WebContent—>WEB-INF—>classes目录下的经过编译的class字节码文件。
因此,上面提到的项目根目录指:到WebContent的目录路径
二、实际应用:
在实际开发中,我们一般建议使用绝对路径。
若一定想在页面中使用相对路径,可以在页面<head>中添加<base />标签,<base />标签中的href属性,可用来指定页面中相对路径的前缀
<base>标签
<!-- base标签由一个href属性,这个属性可以做为我们在页面中相对路径的前缀
也就是说:我们在当前页面中写的相对路径,它会默认以base标签中的href
属性值做为前缀,所以base标签可以让我们以使用相对路径的方式来使用绝对路径!
base标签仅仅对相对路径起作用,对绝对路径不起作用!-->
<base href="http://localhost:8080/servlet01/html/"/>