10.JSTL和EL
十. JSTL和EL
- 为什么需要EL
在JSP中使用Java脚本的局限
-
- 在JSP页面中嵌入大量的Java代码
- 访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换
-
- EL表达式使JSP的开发变得更加简单
${requestScope.employee.computer.manufacturer}
-
EL表达式简介
-
什么是EL
- Expression Language(表达式语言)
-
EL的功能
- 替代JSP页面中数据访问时的复杂编码
-
EL的特点
-
自动转换类型
- EL得到某个数据时可以自动转换类型
- 使用简单
-
自动转换类型
-
什么是EL
- EL表达式语法6-1
${ EL expression }
-
- 通过变量名取值
- 获取对象的属性值
- 获取集合元素
- 执行表达式
- EL表达式语法6-2
${变量名}
按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null
指定作用域
- EL表达式语法6-3
获取对象的属性值
<%= ( (User) request.getAttribute("user") ) .getName() %>
点操作符
${user.name}
[ ]操作符
${user["name"]}
- EL表达式语法6-4
获取集合元素-List
- EL表达式语法6-5
获取集合元素-Map
- EL表达式语法6-6
执行表达式
关系操作符
逻辑操作符
empty操作符
- EL隐式对象
- EL隐式对象介绍
- EL表达式的综合应用
- 为什么使用JSTL
EL表达式封装了数据访问的功能,而JSTL标签库则封装了逻辑控制、循环控制以及数据格式化等功能,二者结合使用才能完整实现动态页面的开发需求
- 什么是JSTL
什么是JSTL
JSP标准标签库(JSP Standard Tag Library)
JSTL通常会与EL表达式合作实现JSP页面的编码
- JSTL的环境搭建
使用JSTL的步骤
-
- 引入JSTL的jar文件和标签库描述符文件
- 在JSP页面添加taglib指令
- 使用JSTL标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- JSTL标准标签库介绍
- 通用标签4-1
set:设置指定范围内的变量值
将value值存储到范围为scope的变量variable中
<c:set var="variable" value="value" scope="scope" />
将value值设置到对象的属性中
<c:set target="target" property="property" value="value" />
示例:
// 在Servlet或JSP中设置JavaBean
User user = new User();
request.setAttribute("user", user);
// 在JSP中修改JavaBean的属性值
<c:set target="${user}" property="name" value="defaultName" />
- 通用标签4-2
out:计算表达式并将结果输出显示
不指定默认值
<c:out value="value" />
指定默认值
<c:out value="value" default="default" />
示例:
// 在Servlet或JSP中设置JavaBean
User user = new User();
request.setAttribute("user", user);
// 在JSP中输出JavaBean的属性值
<c:out value="${user.name}" default="No UserName" />
- 通用标签4-3
out:计算表达式并将结果输出显示
转义特殊字符
- 通用标签4-4
<c:remove var="variable" scope="scope" />
- 小结
通用标签的使用
- 条件标签3-1
if:实现Java语言中if语句的功能
- 条件标签3-2
使用if标签判断是否登录
- 条件标签3-3
choose:实现if - else if - else语句的功能
- 迭代标签4-1
forEach:实现对集合对象的遍历
- 迭代标签4-2
- 迭代标签4-3
通过迭代标签遍历Map
- 迭代标签4-4
forEach:指定迭代的次数
- 总结