记录自己的学习历程--自己对于JSP中pageContext对象的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26022579/article/details/77755810

关于pageContex--页面上下文对象自己的理解,只是作为新手学习很浅显的认识,如有误,请大牛指出,或者请告诉我更深的理解,感激不尽!

新建jsp1jsp2,目录结构如下:

 

 

  在jsp1页面中添加一个超链接<a href="jsp2.jsp">跳转到jsp2</a>,点击超链接,将会出现404错误,找不到jsp2.jsp。这是什么原因,按理说jsp1.jspjsp2.jsp位于同一目录下,按相对路径查找应该能在当前目录下找到,但是为什么找不到呢?原因在于我们创建一个jsp页面时,编译器会默认为我们加上下图几句话

 

 

  在页面顶部java小脚本中加入”System.out.print(basePath)”,刷新页面控制台会输出”http://localhost:8088/BookShop/”这句话,这句话就是项目完整的路径,而<base href="<%=basePath%>">这句话的意思就是从根目录开始查找,所以当在jsp1.jspjsp2.jsp跳转时,默认就是从根路径开始查找jsp2.jsp,由于jsp2.jspWebRoot目录下的jsp文件夹中,并不在WebRoot目录下,所以就无法找到。想要找到jsp2必须将超链接写成<a href="jsp/jsp2.jsp">跳转到jsp2</a>

 

如果去掉 <base href="<%=basePath%>"这句话,就代表不是从项目根目录开始查找,这样<a href="jsp2.jsp">跳转到jsp2</a>就是相对路径查找,就可以成功从当前目录jsp文件夹下找到了jsp2.jsp


      ${pageContext.request.contextPath }就是输出web站点的根目录名称,和<base href="<%=basePath%>"具有相同的作用,如果没有<base href="<%=basePath%>">这句话,想要从jsp1.jsp跳转到WebRoot目录下的index.jsp界面,则必须在jsp1.jsp中写<a href="${pageContext.request.contextPath }/index.jsp">跳转到index</a>,路径第一个必须是${pageContext.request.contextPath }。或者使用相对路径查找<a href="../index.jsp">

猜你喜欢

转载自blog.csdn.net/qq_26022579/article/details/77755810