Spring 梳理-el表達式和jstl


  1. JSP中有這么幾種元素
    1. 1: Scriptlet

      <% ... %>

      2: 聲明元素 <%! ... %>

      3: Java表達式 <%= ... %>

      4: 指令元素 <%@ ... %>

      5: EL表達式 ${ ... }

      6: 標准動作元素 <jsp:*** ... />

      7: 非標准動作 <***:*** ... />

  2. EL表達式
    1. 用來代替<%= %>表達式腳本的
    2. 主要用於四個域中取出數據(application,request,session,page),即簡化getAttribute…等操作的。
    3. 如果這樣寫${name},不指定域,則會從小域到大域依次查找。
    4. 示例
    5. <%
          request.setAttribute("name", "Feathers");
      %>
      
      name為:${requestScope.name} <!-- 即可取出request域中key為name的值 -->
      ${student.name}表示輸出student對象的name屬性值,等效於<%=student.getName()%>

       

    6. EL 提供 . 和 [ ] 兩種運算符來導航數據。下列兩者所代表的意思是一樣的:

      ${sessionScope.user.sex}等於${sessionScope.user["sex"]}

      . 和 [ ] 也可以同時混合使用,如下:

      ${sessionScope.shoppingCart[0].price}

      回傳結果為shoppingCart中第一項物品的價格。

      不過,以下兩種情況,兩者會有差異:

      (1) 當要存取的屬性名稱中包含一些特殊字符,如. 或 – 等並非字母或數字的符號,就一定要使用 [ ],

      例如:${user.My-Name }

      上述是不正確的方式,應當改為:${user["My-Name"] }

    7. 屬性范圍(jstl名稱)

      EL中的名稱

      Page

      PageScope

      Request

      RequestScope

      Session

      SessionScope

      Application

      ApplicationScope

      我們也可以指定要取出哪一個范圍的變量:

      范例

      說明

      ${pageScope.username}

      取出Page范圍的username變量

      ${requestScope.username}

      取出Request范圍的username變量

      ${sessionScope.username}

      取出Session范圍的username變量

      ${applicationScope.username}

      取出Application范圍的username變量

    8. JSP有9個隱含對象,而EL也有自己的隱含對象。EL隱含對象總共有11 個

      隱含對象

      類型

      說明

      PageContext

      javax.servlet.ServletContext

      表示此JSP的PageContext

      PageScope

      java.util.Map

      取得Page范圍的屬性名稱所對應的值

      RequestScope

      java.util.Map

      取得Request范圍的屬性名稱所對應的值

      sessionScope

      java.util.Map

      取得Session范圍的屬性名稱所對應的值

      applicationScope

      java.util.Map

      取得Application范圍的屬性名稱所對應的值

      param

      java.util.Map

      如同ServletRequest.getParameter(String name)。回傳String類型的值

      paramValues

      java.util.Map

      如同ServletRequest.getParameterValues(String name)。回傳String[]類型的值

      header

      java.util.Map

      如同ServletRequest.getHeader(String name)。回傳String類型的值

      headerValues

      java.util.Map

      如同ServletRequest.getHeaders(String name)。回傳String[]類型的值

      cookie

      java.util.Map

      如同HttpServletRequest.getCookies()

      initParam

      java.util.Map

      如同ServletContext.getInitParameter(String name)。回傳String類型的值

    9. pageContext

      我們可以使用 ${pageContext}來取得其他有關用戶要求或頁面的詳細信息。下表列出了幾個比較常用的部分

      Expression

      說明

      ${pageContext.request.queryString}

      取得請求的參數字符串

      ${pageContext.request.requestURL}

      取得請求的URL,但不包括請求之參數字符串,即servlet的HTTP地址。

      ${pageContext.request.contextPath}

      服務的webapplication的名稱

      ${pageContext.request.method}

      取得HTTP的方法(GET、POST)

      ${pageContext.request.protocol}

      取得使用的協議(HTTP/1.1、HTTP/1.0)

      ${pageContext.request.remoteUser}

      取得用戶名稱

      ${pageContext.request.remoteAddr}

      取得用戶的IP地址

      ${pageContext.session.new}

      判斷session是否為新的,所謂新的session,表示剛由server產生而client尚未使用

      ${pageContext.session.id}

      取得session的ID

      ${pageContext.servletContext.serverInfo}

      取得主機端的服務信息

    10. EL關系運算符

      關系運算符

      說明

      范例

      結果

      == 或 eq

      等於

      ${5==5}或${5eq5}

      true

      != 或 ne

      不等於

      ${5!=5}或${5ne5}

      false

      < 或 lt

      小於

      ${3<5}或${3lt5}

      true

      > 或 gt

      大於

      ${3>5}或{3gt5}

      false

      <= 或 le

      小於等於

      ${3<=5}或${3le5}

      true

      >= 或 ge

      大於等於

      5}或${3ge5}

      false

  3. jsp指令有三種:

    • page指令
    • include指令
    • taglib指令
  4. JSTL:
    1. <%@ taglib prefix="c"   uri="http://java.sun.com/jsp/jstl/core" %>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM