天天看点

EL表达式&JSTL标签库EL表达式&JSTL标签库

EL表达式&JSTL标签库

1、EL表达式

什么是EL表达式,EL表达式的作用?

EL表达式的全称是:Expression Language。是表达式语言

EL表达式的作用:EL表达式主要是代替jsp页面中的表达式在jsp页面中进行数据的输出。

因为EL表达式在输出时,比jsp的表达式脚本要简洁很多

EL表达式的格式是:${表达式}

EL表达式输出null值的时候,输出的是空串。jsp表达式脚本输出null值的时候,输出的是null字符串

EL表达式搜索域数据的顺序

EL表达式主要是在jsp页面中输出数据

主要是输出域对象中的数据。

当四个域中都有相同的key数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出

EL表达式输出Bean的普通属性,数组属性。List集合属性,map集合属性

  1. 需求:–输出Preson类中普通属性,数组属性。List集合属性和map集合属性

EL表达式——运算

语法:${运算表达式},EL支持如下运算符

关系运算符 说明 范例 结果
==或eq 等于 5 = = 5 或 {5==5}或 5==5或{5 eq 5} true
!= 或ne 不等于 5 ! = 5 或 {5!=5}或 5!=5或{5 ne 5} false
<或lt 小于 ${3 < 5} 或 ${3 lt 5} true
>或gt 大于 2 > 10 或 {2 > 10}或 2>10或{2 gt 10} false
<=或 le 小于等于 5 < = 12 或 {5 <= 12} 或 5<=12或{5 le 12} true
>=或ge 大于等于 3 > = 5 或 {3 >=5}或 3>=5或{3 le 5} false
逻辑运算符 说明 范例 结果
&& 或 and 与运算 KaTeX parse error: Expected '}', got '&' at position 11: { 12 ==12 &̲& 12<11}或{12 == 12 and 12<11 } false
||或or 或运算 $12 ==12|12<11}或 ${12 == 12 or 12 <11 } true
!或not 取反运算 KaTeX parse error: Expected 'EOF', got '}' at position 6: !true}̲或{not true } false
算术运算符 说明 范例 结果
+ 加法 ${12 + 18} 30
- 减法 ${30 - 12} 18
* 乘法 ${12 * 12} 144
/或div 除法 144 / 12 或 {144 / 12}或 144/12或{144 div 12} 12
%或mod 取模 KaTeX parse error: Expected '}', got 'EOF' at end of input: {144 % 10}或{144 mod 10} 4

**empty运算:**可以判断一个数据是否为空,如果为空,则输出true,不为空输出false

以下几种情况为空:

  1. 值为null值的时候,为空
  2. 值为空串的时候,为空
  3. 值是Object类型数组,长度为零的时候
  4. list集合,元素个数为零
  5. map集合,元素个数为零

三元运算: 表达式1?表达式2:表达式3

如果表达式1是真的,返回表达式2的值,如果表达式2 的值,返回表达式3 的值

.点运算和[]中括号运算:

.点运算,可以输出Bean对象中某个属性的值

[]中括号运算,可以输出有序集合中某个元素的值

并且[]中括号运算,还可以输出map集合中key里含有特殊字符的key的值

5、EL表达式的11个隐含对象

EL表达式中11个隐含对象,是EL表达式中自己定义的,可以直接使用

变量 类型 作用
pageContext PageContextImpl 它可以获取jsp中的九大内置对象
pageScope Map<String,Object> 它可以获取pageContext域中的数据
requestScope Map<String,Object> 它可以获取Request域中的数据
sessionScope Map<String,Object> 它可以获取Session域中的数据
application Map<String,Object> 它可以获取ServletContext域中的数据
param Map<String,String> 它可以获取请求参数的值
paramValues Map<String,String[]> 它也可以获取请求参数的值,获取多个值的时候使用
header Map<String,String> 它可以获取请求头的信息
headerValues Map<String,String[]> 它也可以获取请求头的信息,它可以获取多个值的情况
cookie Map<String,Cookie> 它可以获取当前请求的Cookie信息
initParam Map<String,String> 它可以获取在web中配置的上下文参数
  1. EL获取四个特定域中的属性

    pageScope ========== pageContext域

    requestScope ========== Request域

    sessionScope ========== Session域

    application ========== ServletContext域

  2. pageContext对象的使用:

    request.getScheme

    session.getId()获取会话的唯一标识

    1. 协议:${pageContext.request.scheme}
    2. 服务器ip:${pageContext.request.serverName}
    3. 服务器端口号:${pageContext.request.servlerPort}
    4. 获取工作路径:${pageContext.request.contextPath}
    5. 获取请求方法:${pageContext.request.method}
    6. 获取客户端ip地址:${pageContext.request.remoteHost}
    7. 获取会话的id编号:${pageContext.session.id}

2、JSTL标签库:

JSTL标签库有 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库

EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得个更加简洁。

JSTL由五个不同功能的标签库组成

功能范围 URL 前缀
核心标签库–重点 http://java.sun.com/jsp/jstl/core c
格式化 http://java.sun.com/jsp/jst/fmt fmt
函数 http://java.sun.com/jsp/jstl/functions fn
数据库(不使用) http://java.sun.com/jsp/jstl/sql sql
xml(不使用) http://java.sun.com/jsp/jstl/xml x

在jsp标签库中使用taglib指令引入标签库

JSTL标签库的使用步骤:

1、先导入JSTL标签库的jar包

2、第二步,使用taglib指令引入标签库

core核心库使用

  1. < c:set/ > 作用:set标签可以往域中保存数据
    <%--
    <c:set/>
        作用:set标签可以往域中保存数据
        域对象.setAttribute(key,value)
        scope属性设置保存到哪个域
        page表示pageContext域(默认值)
        request表示Request域
        session表示Session域
        application表示ServletContext域
        key是多少
        var属性设置key是多少
        value设置value是多少
        value是多少
    --%>
               
  2. < c:if /> if标签用来做if判断
    <%--<c:if test=""></c:if>--%>
    <c:if test="${12 == 13}">
        <h1>12等于12</h1>
    </c:if>
    <c:if test="${12 != 13}">
        <h1>12不等于13</h1>
    </c:if>
               
  3. < c:chose><c:when ><c:otherwise >标签

    作用:多路判断。跟switch…case非常接近

    choose标签开始选择判断
    when标签标识每一种判断情况
        test表示当前判断情况的值
      otherwise表示剩下的情况
      注意:标签里不能使用html注释
               
  4. <c:forEach />

    作用:遍历输出使用

    begin属性设置开始的索引

    end属性设置结束的索引

    step表示遍历的步长

    varStatus表示当前遍历到的数据的状态

    var 属性表示遍历的循环遍历(也是当前正在遍历的数值)

    <c:forEach begin="1" end="10" var="i">
        ${i}
    </c:forEach>
    输出结果就是1 2 3 4 5 6 7 8 9 10
    遍历Object数组
    <c:forEach items="${requestScope.arr}" var="item">
        ${item}<br>
    </c:forEach>