- 在jsp中可以书写java代码,但是后期设计者不提倡在jsp中书写java代码jsp写标签又写java代码,耦合度较高。
- jsp中通过getAttribute取数据时,需要强转、取数据不存在时返回null,容易报错,健壮性不高。
EL表达式
语法规则: ${[作用域标识.]属性名}
- 注意
-
- EL表达式中可使用map对象.key获取对应的value
-
-
- 简单数据里类型
-
-
-
-
- ${[作用域.]参数名}
-
-
-
-
- 数组/List/Set
-
-
-
-
- ${[作用域.]参数名[index]}
-
-
-
-
- value为map时
-
-
-
-
- ${[作用域.]参数名.key}
-
-
-
- 作用域标识可以省略不写
- 特点
-
- 在指定范围中获取的数据存在时,返回空字符串
- 获取完数据时,不需要强壮
- 除了取数据外,还可以执行算术运算、关系运算、逻辑运算
JSTL
本质是是JSP的自定义标签库,提供了if单分支以及foreach循环等自定义标签
准备条件
- 引入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>
- 在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
-
-