JSTL标签库深入解析:<c:forEach>与EL表达式
需积分: 9 131 浏览量
更新于2024-08-18
收藏 3.74MB PPT 举报
"<c:forEach>标记-EL表达式与JSTL标签库"
本文将深入探讨 `<c:forEach>` 标签以及与其紧密相关的 Expression Language (EL) 表达式,它们是JavaServer Pages (JSP) 开发中常用的两个重要工具。`<c:forEach>` 标签用于循环遍历集合,而EL表达式则提供了简洁的数据访问方式。
首先,让我们看看 `<c:forEach>` 标签的语法。它有两种主要用法:一是迭代集合对象的所有成员,二是迭代指定的次数。对于迭代集合,基本语法如下:
```xml
<c:forEach var="varName" items="collection" varStatus="varStatusName" [begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forEach>
```
- `varName`:定义一个局部变量,每次循环时将集合中的当前元素赋值给该变量。
- `items`:指定要迭代的集合或数组。
- `varStatus`:创建一个状态变量,可以访问当前循环的索引、总项数等信息。
- `begin` 和 `end`:可选参数,用于指定迭代的起始和结束位置。
- `step`:可选参数,定义每次迭代的步长。
对于迭代指定次数,可以省略 `items` 参数,只保留 `begin`、`end` 和 `step`:
```xml
<c:forEach var="varName" varStatus="varStatusName" begin="begin" end="end" [step="step"]>
本体内容
</c:forEach>
```
EL(Expression Language)表达式是JSP 2.0引入的一种强大且简洁的数据访问语言。它允许开发者以声明式的方式获取和设置Java对象的属性,无需编写Java脚本。基本的EL表达式格式为 `${expression}`。
例如,`${sessionScope.user.sex}` 可以从Session作用域中获取用户对象的性别属性。EL表达式支持 `. ` 和 `[]` 运算符,两者都可以用来访问对象的属性,但有以下差异:
- 如果属性名包含非字母数字的特殊字符,比如 `"My-Name"`,必须使用 `[]`,即 `${user["My-Name"]}`。
- 当需要动态获取属性名时,`[]` 是必要的,如 `${sessionScope.user[data]}`,其中 `data` 是一个变量,可以根据其值动态访问 `user` 对象的属性。
此外,EL表达式中 `expr-a[expr-b]` 的行为如下:
- 如果 `expr-a` 为 `null`,结果也是 `null`。
- 如果 `expr-b` 为 `null`,结果也是 `null`。
- 当 `expr-a` 是 `Map` 类型时,`expr-b` 的值将作为键来获取 `Map` 中对应的值。
结合 `<c:forEach>` 和 EL,开发者可以在JSP页面中轻松处理循环和数据访问,提高代码的可读性和维护性。这使得JSP开发更加高效,同时也减少了与服务器端交互的复杂性。在实际应用中,通过 `<c:forEach>` 循环遍历列表或数组,然后利用EL表达式进行数据操作,是常见的做法。
2008-12-09 上传
2021-11-14 上传
2017-07-20 上传
2023-06-11 上传
点击了解资源详情
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*,edu.nustti.dao.*,edu.nustti.dao.impl.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <form action="/STU_manager/servlet/UserServlet?action=register" name="f1" method="post">
用户名: | <input type="text" name="userName"> |
密 码: | <input type="password" name="password"> |
姓 名: | <input type="text" name="trueName"> |
性 别: | <input type="radio" checked="checked" name="sex" value="0">男 <input type="radio" name="sex" value="1">女 |
生 日: | <select name="y"> <c:forEach begin="1990" end="2010" var="y"> <option value="${y}">${y}</option> </c:forEach> </select> <select name="m"> <c:forEach begin="1" end="9" var="m"> <option value="0${m}">${m}</option> </c:forEach> <c:forEach begin="10" end="12" var="m"> <option value="${m}">${m}</option> </c:forEach> </select> <select name="d"> <c:forEach begin="1" end="9" var="d"> <option value="0${d}">${d}</option> </c:forEach> <c:forEach begin="10" end="31" var="d"> <option value="${d}">${d}</option> </c:forEach> </select> |
爱 好: | <% FavoritesDao dao1 = new FavoritesDaolmp1(); // 创建爱好存储业务模型 List list1 = dao1.getAllFavorates(); request.setAttribute("F", list1); %> <c:forEach var="f" items="${F}"> <input type="checkbox" name="favorates" value="${f.id }">${f.favorate} </c:forEach> |
班 级: | <% ClassesDao dao2 =(ClassesDao) new ClassesDaoImpl(); // 创建班级存储业务模型 List list2 = dao2.getAllClasses(); request.setAttribute("C", list2); %><select name="classId"> <c:forEach var="c" items="${C}"> <option value="${c.id}">${c.className}</option> </c:forEach> </select> |
介 绍: | <textarea rows="10" cols="20" name="introduction"></textarea> |
<input type="submit" value="注册"> |
2023-05-19 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
深井冰323
- 粉丝: 24
- 资源: 2万+
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器