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" %>

posted on 2018-10-03 18:30  手握太阳  阅读(1003)  评论(0编辑  收藏  举报

导航