Java中的${pageContext.request.contextPath}__【java學習之旅】

來源:互聯網
上載者:User

 之前在drp項目中就接觸了${pageContext.request.contextPath},當時沒有注意,這次在java版高校雲平台ITOO4.0中再次與之相遇,真是無巧不成書啊。再次遇到,我再置之不理,那就說不過去了吧。

說著個之前,我們必須先要簡單的說說EL運算式。  EL運算式

  EL 全名為ExpressionLanguage。作用是:   Ø  擷取資料:

  EL運算式主要用於替換JSP頁面中的指令碼運算式,以從各種類型的web域 中檢索java對象、擷取資料。(某個web域中的對象,訪問javabean的屬性、訪問list集合、訪問map集合、訪問數組)   Ø  執行運算:

  利用EL運算式可以在JSP頁面中執行一些基本的關係運算、邏輯運算和算術運算,以在JSP頁面中完成一些簡單的邏輯運算。${user==null}   Ø  擷取web開發常用對象

  EL 運算式定義了一些隱式對象,利用這些隱式對象,web開發人員可以很輕鬆獲得對web常用對象的引用,從而獲得這些對象中的資料。   Ø  調用Java方法

  EL運算式允許使用者開發自訂EL函數,以在JSP頁面中通過EL運算式調用Java類的方法。

  關於擷取資料,主要採用下面的方式:

  使用EL運算式擷取資料文法:“${標識符}”

  EL運算式語句在執行時,會調用pageContext.findAttribute方法,用標識符為關鍵字,分別從page、request、session、application四個域中尋找相應的對象,找到則返回相應對象,找不到則返回””(注意,不是null,而是Null 字元串)。  ${pageContext.request.contextPath}

  {pageContext.request.contextPath}其實就是一種el運算式的寫法,利用el擷取值的原理,從get方法中擷取資料:

pageContext.getRequest()得到HttpServletRequest對象,這是第一步,第二步是利用拿到的HttpServletRequest調用getContextPath方法。

  作用是:取出部署的應用程式名稱,這樣不管如何部署,所用路徑都是正確的。

  其他的擷取路徑的方式存在的優缺點:

http://www.cnblogs.com/langtianya/archive/2013/03/04/2942515.html

  此外大家之前習慣的寫法是採用jsp指令碼進行的輸出:具體的是:

  <%=request.getContextPath()%>,作用是可以返回當前頁面所在的應用的名字。   Ø  EL優於指令碼<%%>

  1 、EL運算式用${}表示,可用在所有的HTML和JSP標籤中作用是代替JSP頁面中複雜的JAVA代碼.

  2 、EL運算式可操作常量變數 和隱式對象. 最常用的隱式對象有${param}和${paramValues}. ${param}表示返回請求參數中單個字串的值. ${paramValues}表示返回請求參數的一組值.pageScope表示頁面範圍的變數.requestScope表示請求對象的變數.sessionScope表示會話範圍內的變數.applicationScope表示應用範圍的變數.

  3 、 <%@pageisELIgnored="true"%> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中預設的啟用EL語言.

   4 、EL語言可顯示 邏輯運算式如${trueand false}結果是false  關聯運算式如${5>6}結果是false  算術運算式如 ${5+5} 結果是10

   5 、EL中的變數搜尋範圍是:page,equest,session,application   點運算子(.)和"[ ]"都是表示擷取變數的值.區別是[ ]可以顯示非詞類的變數  知識小拓展

  request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";這是在drp項目中也是十分常見的一個運算式,在我們使用${pageContext.request.contextPath}之前經常用的。

  那麼究竟是什麼意思呢。

  看似難以理解,其實就是獲得應用的根url,或者說訪問地址,舉個例子,我們經常訪問本地地址的8080連接埠號碼,也就是http://localhost:8080;

  具體解釋:

  1、request.getScheme() 返回協議的名稱   http,和後面的"://" 拼起來就成了http://

  2、request.getServerName()這是擷取你的伺服器的名稱  本機就是localhost或者127.0.0.1,均表示本地

  3、request.getServerPort()  返回連接埠號碼,比如8080  小結

  之前對這三個之間有點記不清楚,總結了 一下,一下子明朗多了,知識還是在於顆粒歸倉啊。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.