EL表达式和JSTL
一、EL表达式
1.1. EL表达式是什么
是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签,直接使用。
1.2. EL表达式的使用
1.2.1. 读取bean的属性值
javabean指的是一个符合如下要求的Java类:
public class xxx{
public xxx(){}
//最好实现Serializable接口
//有一些属性及对应的get/set方法
}
-
方式一
${user.username}
-
容器依次从pageContext–>request–>session–>application中查找绑订名为"user"的对象,找到之后,调用该对象的
getUsername
方法,然后输出该方法的结果. -
会将null转换成""输出。
-
如果找不到对应的对象,不会报空指针异常。
-
可以使用"
pageScope
,requestScope
,sessionScope
,applicationScope
"来指定查找范围,比如:${sessionScope.user.username}
-
-
方式二
${user['username']}
- []里面允许使用绑订名,比如
${user[s1]}
- []里面允许使用从0开始的下标(整数),用来读取数组中的某个元素。
- []里面允许使用绑订名,比如
1.2.2 EL表达式的运算
-
算术运算:
+,-,*,/,%
+
只能求和 -
关系运算:
>,>=,<,<=,==,!=
-
逻辑运算:
&&,||,!
-
empty运算:
empty
1.2.3. 读取请求参数值
${param.username}
等价request.getParameter("username")
${paramValues.city}
等价request.getParameterValues("city")
二、JSTL
2.1. JSTL是什么
apache开发的一套jsp标签,后天捐献给了sun,sun将其命名为jstl
2.2. 如何使用JSTL
2.2.1. 导包
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.2.2. 使用tablib指令来导入要使用的标签
<%@ taglib uri="" prefix="" %>
uri属性用来指定要导入的标签的命名空间
命名空间是为了区分同名的元素,在元素前添加的一段说明,通常是一个域名
prefix属性用来指定命名空间的别名
2.2.3. 核心标签
-
if标签
-
语法
<c:if test=""> xxxx </c:if>
-
当test属性值为true时,执行标签体的内容,test属性值可以使用el表达式来赋值
-
var属性指定绑定名,scope属性指定绑定范围(可以使page,request,session,application)
-
-
choose标签
-
语法
<c:choose> <c:when test=""> </c:when> <c:otherwise> </c:otherwise> </c:choose>
-
when可以出现一次或者多次,表示一个分支(相当于一个if语句)
当test属性值为true时,执行标签体的内容
-
otherwise可以出现0次或者一次,表示例外
-
-
forEach 标签
-
语法
<c:forEach items=""> </c:forEach>
-
items
指定要遍历的集合或者数组,可以使用el表达式来赋值 -
var
属性指定绑定名,绑定范围固定是pageContext该标签每次从集合或者数组中取一个元素,然后将该元素绑定到pageContext上
-
varStatus
属性指定绑定名,绑定范围固定是pageContext绑定值是一个特殊的对象,该对象提供了一些方法,可以通过这些方法来获得当前遍历的状态:
getIndex()
:用来获得当前正在被遍历的元素的下标,下标从0开始getCount()
:用来获得当前是第几次遍历
-