JavaWeb——JSTL与EL表达式获取数据

  • 在jsp中可以书写java代码,但是后期设计者不提倡在jsp中书写java代码jsp写标签又写java代码,耦合度较高。
  • jsp中通过getAttribute取数据时,需要强转、取数据不存在时返回null,容易报错,健壮性不高。

EL表达式

语法规则: ${[作用域标识.]属性名}

  • 注意
    • EL表达式中可使用map对象.key获取对应的value
      • 简单数据里类型
        • ${[作用域.]参数名}
      • 数组/List/Set
        • ${[作用域.]参数名[index]}
      • value为map时
        • ${[作用域.]参数名.key}
    • 作用域标识可以省略不写
  • 特点
    • 在指定范围中获取的数据存在时,返回空字符串
    • 获取完数据时,不需要强壮
    • 除了取数据外,还可以执行算术运算、关系运算、逻辑运算

JSTL

本质是是JSP的自定义标签库,提供了if单分支以及foreach循环等自定义标签

准备条件

  1. 引入jar包
<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
  1. 在jsp引用中包含路径
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!--输出,条件,迭代标签库-->
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!--格式化-->
<%@ page isELIgnored="false"%> <!--支持EL表达式,不设的话,EL表达式不会解析-->
  • prefix
    • 自定义标签的使用前缀,使用时<c:标签名>
  • uri
    • 指定需要引入的标签库

语法规则

通过前缀使用标签

<前缀名:标签名> </前缀名:标签名>

  • 选择结构
    • 单分支 <c:if test="表达式">
      • test
        • 真则显示
        • 假则不显示
<h5>性别:
    <c:if test="${stus[0].gender == 1}">男</c:if>
    <c:if test="${stus[0].gender == 0}">女</c:if>
</h5>
    • 多分支
<c:choose>
  <c:when test="表达式">xxx</c:when>
  。。。
  <c:when test="表达式">xxx</c:when>
  <c:otherwise>Error</c:otherwise>
</c:choose>
      • c:when标签中表达式
        • 表达式为真时显示该标签,删除其他标签
      • c:otherwise类似switch中的Default
        • 所有的when都匹配失败则显示该标签
  • 循环
    • <c:forEach items="" var="" varStatus=""></c:forEach>
      • 用于循环遍历一个集合或数组,根据集合或数组的长度将标签内的数据重复显示
      • 参数
        • items:需要被循环或迭代的集合或数组,需要利用${}获取
        • var:被循环迭代的集合获取数组当前元素对象 取任意值
        • varStatus:被循环迭代的集合或数组的状态信息对象,取值任意,可以利用这个对象获取一些数据
          • 当前元素索引
          • 当前元素是第几个
        • begin:开始索引
        • end:结束索引
        • step:步长
<table>
    <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
    </tr>
    <c:forEach items="${stus}" var="stu" varStatus="status">
        <tr>
            <td>${status.count}</td>
            <td>${stu.name}</td>
            <td>${stu.age}</td>
            <td>${stu.gender == 1?"男":"女"}</td>
        </tr>
    </c:forEach>
</table>
  • 格式化
    • fmt是格式化标签,可以对数字、日期等格式化
    • 格式化日期 <fmt:formatDate value="" pattern=""/>
      • value 被格式化的数据
      • pattern 格式化规则
        • yyyy-MM-dd HH:mm:ss
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值