你的应用访问地址是" http://192.168.0.1/app/"
其中的"/app"是contextPath,可以从request.getContextPath()得到
概念
绝对路径和相对路径
"/view/login.jsp"就是绝对路径,从根目录/开始写;
"view/login.jsp"就是相对路径,"./view/login.jsp"也是相对路径,这种路径是相对于当前文件的目录来讲的。
绝对地址和相对地址
" http://192.168.0.1/app/login"就是绝对地址;
"/login"就是相对地址,"view/login.jsp"也是相对地址,这个地址是相对于浏览器地址栏中的当前地址来讲的。
原理
1. 服务器解析的路径。
Servlet forward to JSP
JSP forward to Servlet
JSP forward to JSP
JSP include JSP
可以从根目录/开始写绝对路径;也可以从本目录开始写,这样可用"."和".."来表示本目录和父目录。
2. 客户端浏览器解析的路径。
表单action路径
redirect重定向路径
超链接路径
图片路径
CSS路径
Javascript文件路径以及里面要用到的路径
绝对路径的解析,浏览器直接加在服务器地址后面来访问。例如"/login",浏览器会访问" http://192.168.0.1/login",路径里把"/app"丢失了。绝对路径前面一定要加上contextPath,否则部署环境一变,你的应用就找不到北了。
相对路径的解析,浏览器以根据地址栏中的当前地址作为基准,把相对路径加上去来访问。例如当前地址栏地址是" http://192.168.0.1/view/login.jsp",那么相对路径"img/face.png"会被浏览器解析为" http://192.168.0.1/view/img/face.png"。
forward到别的路径以后,浏览器地址栏的当前地址并不会变化,这种情况下,在JSP文件中使用相对路径就很容易发生错误,因为你还要关心forward前是个什么路径,如果forward了多次,或者上一个请求也是forward过来的,那么浏览器地址栏的当前地址根本就没法追踪。有的人说你可以base标签啊,回答:我的应用是WAP,没这个标签。有的人说你可以用变量追踪啊,这种办法很丑陋,很麻烦。
结论
1. 不要使用相对路径,统一使用绝对路径,为啥?好找呗。
2. 在页面中使用相对地址时,一定要加上contextPath。为啥?原来部署在服务器根目录"/",现在想部署在"/app",你要不加上contextPath会死的比较难看。
我自己写了一套标签,上面2个规则全搞定,嘿嘿
分享到:
相关推荐
java中相对路径与绝对路径问题
Asp.net相对路径与绝对路径
相对路径和绝对路径的概念
java项目相对路径与绝对路径问题分析
java web中File的相对路径与绝对路径总结,用于在运行时获取配置文件、动态加载对象等
绝对路径转相对路径工具,绝对路径转相对路径工具,绝对路径转相对路径工具,绝对路径转相对路径工具,绝对路径转相对路径工具
WPF中Image控件Source属性的相对路径和绝对路径问题的开发经验总结,亲测通过!
帮你彻底弄清相对路径和绝对路径。。。。相对路径和绝对路径的区别与使用
java Web 中相对路径绝对路径问题总结
实例说明在C#中如何将相对路径转化为绝对路径
本文是一篇Java相对路径绝对路径全面总结的word文档。
详细介绍绝对路径与相对路径 详细介绍绝对路径与相对路径 详细介绍绝对路径与相对路径
关于Servlet中的相对路径和绝对路径归纳.
绝对路径与相对路径.DOC文件.....
相对路径和绝对路径的优缺点,这一点很基础!
绝对路径和相对路径
连接ACCESS绝对路径相对路径.txt 连接ACCESS绝对路径相对路径.txt
描述相对路径和绝对路径的区别与联系,讲解了../、/、../../等的含义
HTML相对路径和绝对路径
相对路径与绝对路径的差别:详细分析了相对路径与觉丢路径的差别