EL & JSTL
EL表达式
标准语法格式:
${域对象别名.关键字}
${requestScope.key}
可用简化版:(定位顺序:pageContext-->request-->session-->application)
简化语法格式:
${关键字}
${key}
==================================================================
相关运算:
${key1 + key2}
${age ge 18 ? "yes" : "no") 等价 ${age > 18 ? "yes" : "no")
==================================================================
可用内置对象:
1.param
作用:读取请求参数
等同:String value = request.getParameter("请求参数名") out.write(value)
语法格式:
${param.key}
2.paramValues
作用:读取多个请求参数(前端为多选按钮发送参数时)
等同:String array[] = request.getParameter("请求参数名") out.write(array[0])
语法格式:
${paramValues.array[0]}
EL表达式中获取多个参数无法进行遍历,只能一个一个展示,但JSTL实现了循环遍历。
3.initParam
作用:读取全局作用域中的共享数据(一般存有如driver等配置数据)
等同:String value = application.getInitParameter("driver") out.write(value)
语法格式:
${initParam.共享数据名}
JSTL标签工具类
前提:
- 导入 jstl 和 standard 的 jar 包
- 在需要使用 JSTL 标签的 jsp 中添加
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
1.set标签
作用:在jsp文件上设置域对象中共享数据
语法:<c:set scope="session/application/request/page" var="key" value="共享数据" />
2.if标签
作用:控制哪些内容可写入响应体
示例:
<c:if test="${sessionScope.age ge 18}">
欢迎光临
</c:if>
3.choose标签
作用:多分支选择判断,控制哪些内容可写入响应体
示例:
<c:choose>
<c:when test="EL表达式判断">内容1</c:when>
<c:when test="EL表达式判断">内容2</c:when>
<c:otherwise>内容3</c:otherwise>
</c:choose>
4.forEach标签
第一种使用方式:直接循环遍历
var:声明循环变量名
begin:初始化循环变量
end:循环变量可接收的最大值
step:循环变量递增值或递减值
注意:step可省略,默认递增或递减一;数据均是存储到当前页作用域对象中
<select>
<c:forEach var="i" begin="1" end="5" step="1">
<option>第${pageScope.i}页</option>
</c:forEach>
</select>
第二种使用方式:遍历域对象中List集合对象
item:通过EL表达式获取域对象集合
var:声明循环变量
<c:forEach items="${key}" var="stu">
<tr>
<td>${stu.sid}</td>
<td>${stu.sname}</td>
</tr>
</c:forEach>
第三种使用方式:遍历域对象中Map集合对象
注意:遍历map集合,每次从map中得到一个键值对
示例遍历map:
<c:forEach items="${mapKey}" var="key_value">
<tr>
<td>${key_value.key}</td>
<td>${key_value.value.sid}</td>
<td>${key_value.value.sname}</td>
</tr>
</c:forEach>
都看到最后了,右下角来个赞鸭!-.- 欢迎评论留言~