自己弄了个JSP页面,用的是TOMCAT,JSP是这样写的:<body>
<%
out.print("application.getContextPath(): " + application.getContextPath() + "<br />");
%>
<a href="/xx.jsp">a link</a>
</body>启动TOMCAT,浏览器输入http://localhost:8888/HeadFirstExamples/testPageContext1.jsp,显示下结果:
------------------------------------------------
application.getContextPath(): /HeadFirstExamples
a link然而链接(a link)的却是http://localhost:8888/xx.jsp,为什么不是http://localhost:8888/HeadFirstExamples/xx.jsp呢??求解,求释疑,谢谢!

解决方案 »

  1.   

    <a href="/xx.jsp">a link</a>
    在tomcat中这句就是
    http://localhost:8888/xx.jsp
      

  2.   

    那如何让它变成http://localhost:8888/HeadFirstExamples/xx.jsp这样呢?“/”不是相对于contextPath吗?
      

  3.   

    <a href="xx.jsp">a link </a>要看xx.jsp和testPageContext1.jsp的相对路径
      

  4.   

    由于在很多页面要引用这个xx.jsp,所以相对路径不好弄啊。
    所以放到contextPath下,用这个“/”来引用的。
    很费解呀,为什么ServletContext.getResourceAsStream("/pp.jar")却可以引用到contextPath下面的pp.jar呢?
      

  5.   

    <a href="${pageContext.request.contextPath}/xx.jsp">a link</a>
      

  6.   

    谢谢zhoupuyue,那么“/”在JSP中,到底表示了什么意思呢?除了这种方式,还有其它办法没得呢?
      

  7.   

    还有一个<base >标签.<head >
       <base >
    </bead>这里可以定义好当前页面的路径,然后其它一些../都是它为基础
      

  8.   

    <body>
        <%
            out.print("application.getContextPath(): " + application.getContextPath() + "<br />");
        %>
        <a href="<%=application.getContextPath()%>/xx.jsp">a link</a>
    </body>
      

  9.   

    哦,是这样,谢谢了。再请问一下,每个页面里都需要这样配置么,有没有一个地方配置,整个APP都能够应用的?
      

  10.   

    这个没有,不过你知道各种连接的情况就行了.没有多少种情况的,多数都是用相对路径,我使用Struts标签的时候,就是一直<html:base/>让base生成一个页面的绝对路径.其它的一概使用相对路径.有时候是一个连接到这个页面,有时候一经过一个.do(Struts Action)之后到这个页面的,使用这个base就很好用了.