1. 程式人生 > >記錄自己的學習歷程--自己對於JSP中pageContext物件的理解

記錄自己的學習歷程--自己對於JSP中pageContext物件的理解

關於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">