關於和${pageContext.request.contextPath}的問題

前言

在自己寫項目的時候,肯定會遇到的,尤其是在寫jsp文件時,發現<%=request.getContextPath()%>和${pageContext.request.contextPath}混寫,看起來很亂,學習起來就很亂,使用的時候發現兩個都可以用,但還是覺得要弄明白,到底有什麼區別?

正文

${pageContext.request.contextPath}屬於EL表達式的寫法,<%=request.getContextPath()%>屬於jsp的寫法,作用都是取出部署的應用程序名,比如說一個地址http//:localhost:8080/hotel/login.jsp,如果我們需要用EL表達式寫就是${pageContext.request.contextPath}/hotel/login.jsp,也可以寫成<%=request.getContextPath()%>/hotel/login.jsp,這樣都是沒與問題的。
通常情況下,我們所寫項目考慮到維護性,採用MVC思想,針對JSP主要是表現層代碼,其他的代碼最好不出現在其中,因此,我們習慣在項目jsp中採用EL表達式。

在運行我們發現了<%=request.getContextPath()%>和${pageContext.request.contextPath}獲取的結果都是項目名(上下文),如果我們想要獲取項目的絕對路徑和端口號我們有什麼辦法呢?


<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
然後下文都將引用改成<%=basePath%>就可以了。

這樣我們就獲取了我們想要的結果又完整的路徑和端口號還有項目的上下文環境。

推薦把項目中的${pageContext.request.contextPath}都替換成了<%=basePath%>。
發佈了65 篇原創文章 · 獲贊 132 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章