EL表达式
定义
-
Experssion Language 表达式语言,替代JSP页面中访问数据时的复杂代码,执行表达式。
特点
-
使用简单
语法
${表达式} 点操作符,可以访问对象的某个属性 []操作符,可以访问对象的某个属性及数组元素
EL表达式的隐式对象
1.作用域访问对象
-
pageScope对象
-
requestScope对象
-
sessionScope对象
-
applicationScope对象
每个作用域对象都和JSP的域对象一一关联。当访问的数据没有指定域时,会按照顺序从小到大找。
2.参数访问对象
-
param对象 获取参数
-
paramValues对象 返回数组,获取多个参数
3.JSP隐式访问对象
-
pageContext 可以访问jsp的内置对象
不能直接访问JSP内置对象: 通过pageContext去访问 如: pageContext.request.getAttribute("map")
4.首部访问对象
-
header
-
headerValue
-
cookie
用于访问请求头的数据。
5.初始化访问对象
-
initParam对象
Empty前缀操作符
Empty运算符是一个前缀操作符,用于检测一个变量是否为空
${empty username} true ${not empty username} false ${! empty username} false
JSTL标签库
定义
-
JSP标准标签库(JSP Standard Tag Library)
-
包含一组开发JSP页面时常见功能的标准标签。
核心标签库有 通用标签库 set out remove 条件标签库 if choose 迭代标签库 foreach
优点
-
不用嵌入java代码就可以实现JSP页面逻辑控制
-
配合EL表达式,方便的实现JSP页面编码。
-
代码简洁。
在idea中JSTL的引入
-
在项目中引入JSTL依赖的jar文件
-
使用taglib指令导入标签库
prefix 设置前缀名
uri 设置核心文件
通用标签库
out标签
-
用于输出表达式的结果,比EL输出功能更加丰富。
语法
<c:out value="" default="" escapeXml="true|false"/>
value : 输出的结果,可通过EL表达式去获取
default: value的值为空时,输出默认值
escapeXml : 表示是否转换特殊字符, false 转换
set标签
-
用于设置作用域变量的值或属性值
语法
<c:set var="变量名" value="值" target="对象名" property="属性" scope= "存储的作用域"/>
以变量的形式赋值
<c: set var="name" value="张三" scope="request"/> //指定request作用域的name变量
以对象的形式赋值
<%
Student stu=new Student();
request.setAttribte("stu",stu);
%>
//通过EL表达式获取对象,给对象的name属性赋值
<c: set value="张三" target="${stu}" property="name"/>
注意: 通过对象属性赋值时,无需指定作用域,因为在设置值之前,对象已经指定了作用域,再指定会冲突。
remove标签
-
用于移除指定作用域内的指定变量
语法
<c:remove var="<String>" scope="<String>"/>
条件标签库
if标签
-
用于实现if语句的功能。
语法
<c:if test="条件" var ="存放表达式的执行结果" scope="变量的存储变量"/>
choose标签、when标签、otherwise标签
-
这些标签配合实现互斥条件的执行,类似java语言的if-else if-else 语句或者switch。
语法
<c:choose> <c:when test="condition1"> //if 主体内容 </c:when> <c:when test="condition2"> //else if 主体内容 </c:when> <c:otherwise> //else 主体内容 </c:otherwise> </c:choose>
如果第一个条件不符合,就会执行下面的,继续执行。
迭代标签库
forEach标签
-
使用该标签可以很方便地实现迭代操作。
遍历两种语法格式
1.遍历集合
<c:forEach var="引用成员的变量" items="集合对象" varStatus="存储索引等成员相关信息"></c:forEach>
2.常规循环
<c:forEach var="引用成员的变量" varStatus="存储索引等成员相关信息" begin="beginIndex" end="endIndex" step="类似i++"></c:forEach>
常规循环一般用于决定循环的次数,就是普通for循环。
varStatus : 存放var属性的成员信息,如索引。
begin: 属性表示开始的位置
end: 属性表示结束的位置
step: 表示循环的步长,类似自增或自减