jsp&servlet相对路径总结
先定义几个替换:
http://localhost:8080/ => ip/
/mywar/ => war/
http://localhost:8080/mywar/ => ip/war/
/mywar => [contextpath] (request.getcontextpath())
总结如下:
1. 在jsp中的“/”表示的根为“ip”,不包含war路径
2. 在servlet中以forward方式使用的“/”表示的根为“ip/war/”,包含了war路径
3. 在servlet中以sendredirect方式使用的“/”表示的根为ip,不包含war路径
4. 在servlet中以forward方式跳转,则浏览器的地址栏仍然为此servlet,不会改动
5. 在servlet中以sendredirect方式跳转,则浏览器的地址栏改动为目的路径
6. 相对路径的确定是以浏览器的地址栏显示的路径为基准的,而非具体的目录结构,所以
跳转到同目录下的某个页面使用<a href="文件名">link</a>这种方式不是永久成立的
(做asp的人不要惊讶,这里说的jsp和servlet
)
7. 为了避免jsp跳jsp,servlet跳jsp,forward方式跳转,sendredirect跳转产生的路径问题, 对于jsp和使用sendredirect跳转的servlet,采用直接使用带容器路径[string request.getcontextpath()]的绝对路径就能完全解决,即:
时, 这里url使用的“/”表示的根为“ip/war/”,包含了war路径