EL表达式和JSTL标签库

1. EL表达式

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

    • EL表达式的全称是: Expression Language。是表达式语言。
    • EL表达式的什么作用: EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。

    jsp文件:

    <%
        request.setAttribute("key", "key");
    %>
    表达式脚本输出key的值是: <%=request.getAttribute("key")%><br/>
    EL表达式输出key的值是:${key}
    

    浏览器output:
    在这里插入图片描述

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

    • EL表达式主要是在jsp页面中输出数据
    • 主要是输出域对象的数据
    • 当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
  • EL表达式输出复杂的JavaBean对象案例
    jsp文件:

    <h1>scope.jsp页面</h1>
    <%
        Person person = new Person();
        person.setName("陈有为好帅");
        person.setPhones(new String[]{"123456789"});
    
        List<String> cities = new ArrayList<String>();
        cities.add("北京");
        cities.add("上海");
        cities.add("深圳");
        person.setCities(cities);
    
        Map<String, Object> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        person.setMap(map);
        request.setAttribute("person", person);
    %>
    输出Person: ${person}<br/>
    输出Person的name属性:${person.name}<br/>
    输出Person的phones具体的元素值: ${person.phones[0]}
    

    网页output:
    在这里插入图片描述

2. EL表达式中4个隐含对象:

  • EL表达式中自己定义的,可以直接使用
    • pageScope: 它可以获取pageContext域中的对象
    • requestScope: 它可以获取request域中的对象
    • sessionScope: 它可以获取session域中的对象
    • applicationScope: 它可以获取ServletContext域中的对象

3. JSTL标签库:

  • JSTL标签库, 全称是指JSP Standard Tag Library JSP标准标签库。EL表达式主要是为了替换jsp中表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更加简洁。

  • JSTL标签库的使用步骤:

    • 先引入taglibs的jar包
    • 使用taglibs导入标签库
  • core 核心库使用:

    • <c:set />

      • 可以在域中保存数据
    • <c:if test=""></c:if>
      jsp文件:

    <h1>scope.jsp页面</h1>
    <%--test属性表示判断的条件(使用EL表达式输出)--%>
    <c:if test="${ 12 == 12}">
        <h1>12等于12</h1>
    </c:if>
    

    浏览器output:
    在这里插入图片描述

    • <c:choose>. <c:when> <c:otherwise>: 多路判断。跟switch … case… default非常接近
      jsp文件:
    <%
        request.setAttribute("height", 178);
    %>
    
    <c:choose>
        <c:when test="${requestScope.height > 190}">
            <h2>很高</h2>
        </c:when>
        <c:when test="${requestScope.height > 180}">
            <h2></h2>
        </c:when>
        <c:when test="${requestScope.height > 170}">
            <h2>还可以</h2>
        </c:when>
        <c:otherwise>
            <h2>剩下小于170的情况</h2>
        </c:otherwise>
    </c:choose>
    

    网页output:
    在这里插入图片描述

    • when标签的父标签一定要是choose标签
  • <c:forEach />
    jsp文件:

    <%--1.遍历110--%>
    <c:forEach begin="1" end="10" var="i">
        ${i}
    </c:forEach>
    

    网页output:
    在这里插入图片描述

  • <c:forEach />输出数组:
    jsp文件:

    <%
        request.setAttribute("arr", new String[]{"12345678", "87654321"});
    %>
    <c:forEach items="${requestScope.arr}" var="item">
        ${item} <br>
    </c:forEach>
    

    网页output:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值