我知道getContextPath()得到当前应用的根目录的,我的项目中也用到了,而且几乎每个跳转都用这个,但是我有个疑问,"/"不是也是得到根目录吗,为什么不用"/"代替getContextPath()呢? 比如<a href="/index.jsp">, 这样不是更方便?  难道getContextPath有什么好处吗?

解决方案 »

  1.   

    当一个页面在webapp的根目录下,比如说是index.jsp中有<a href="/xx.jsp">..xx.jsp同样在根目录下..例如访问http://localhost:8080/项目名/index.jsp...当你点<a href="/xx.jsp">这个连接的时候,你的转发路径为http://localhost:8080/xx.jsp...将项目名丢失了,所以写getContextPath是为了在任何情况下保证路径的正确性而已
    正确的写法是<a href="xx.jsp">不写/....,如果要写/那么前边就要加上getContextPath
      

  2.   

    这个就是相对路径的问题了...有没有可能丢失项目名什么的,跟/无关...你只要能保证你的相对路径都是对的,你不用getContextPath也可以...
    一个相对路径的拼接,例如www.xxx.com/xx.jsp中有连接<img src="yy.gif">那么这个图片的路径的www.xx.com/yy.gif
    都是这样拼起来的..
    所以getContextPath只是为了保证拼接路径的完整性..
    同理:http://localhost:8080/xx/xx.jsp中有<img src="yy.gif">就是www.xxx.com/xx/yy.gif,你如果写成<img src="/yy.gif">则路径仍然变成http://localhost:8080/yy.gif...一样丢失了..这样你明白getContextPath的作用了吗??/你如果有getContextPath,则永远保证了项目名不丢失...
    最重要的是,getContextPath是为了不把项目名写死...因为在部署项目的时候,你的项目名原来是xxx,可能部署上就变成了yyy.但是getContextPath也会动态的跟着变..就这些作用了..
      

  3.   

    楼主没有理解contextpath的含义
      

  4.   

    恩   基本算是搞清楚了,也就是说getcontextpath()就是返回项目名称的,如果用"/"代替,有可能会出错
    以后我的项目中坚决不用"/"了.   谢谢ee4456   和 yucc2008