十. JSTL和EL
为什么需要EL在JSP中使用Java脚本的局限
在JSP页面中嵌入大量的Java代码访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换 EL表达式使JSP的开发变得更加简单${requestScope.employee.computer.manufacturer}
EL表达式简介 什么是EL Expression Language(表达式语言)EL的功能 替代JSP页面中数据访问时的复杂编码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-1set:设置指定范围内的变量值
将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-3out:计算表达式并将结果输出显示
转义特殊字符
通用标签4-4<c:remove var="variable" scope="scope" />
小结
通用标签的使用
条件标签3-1
if:实现Java语言中if语句的功能
条件标签3-2
使用if标签判断是否登录
条件标签3-3choose:实现if - else if - else语句的功能
迭代标签4-1forEach:实现对集合对象的遍历
迭代标签4-2 迭代标签4-3
通过迭代标签遍历Map
迭代标签4-4forEach:指定迭代的次数
总结