EL与JSTL语法大全

EL出现的原因

在JSP页面中,经常用JSP表达式<%=变量/表达式%>来输出声明的变量以及页面传递的参数,当变量很多时,书写这样的表达式会显得很累赘,那么EL标签就解决了这个问题,简化了表达式

EL标签的语法

	${参数名}

例如${param.name}等价于<%=request.getParameter(‘name’)%>

EL标签的功能

可以访问JSP中不同域的对象(application、Session、Request、PageContext)
可以访问Java Bean中的属性
可以访问集合元素
支持简单的运算符操作

EL表达式

EL(Expression Language 表达式语言)定义了一系列隐含对象和操作符,无须Java代码即可方便地访问pageContext、request、session、application作用域中的对象。
1.EL表达式显示数据
1.1基本数据类型与String类型
在这里插入图片描述
1.2自定义类型
a、在页面中要显示的自定义类成员变量必须要有getter;
b、如何显示:${key(setAttribute中的key).成员变量名}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.3集合或数组
List
在这里插入图片描述
数组
在这里插入图片描述
在这里插入图片描述

Set集合:无法获取单个元素,但可以使用<c:forEach></c:forEach>遍历set集合中元素。

Map集合
在这里插入图片描述
在这里插入图片描述
注意:
1、Map集合的key最好符合Java标识符规范,如果不符合,则在EL表达式中不能使用.的方式获取到Map相应的value,只能通过[]的方式获取到相应的value;
2、Map集合key的泛型不能是Java基本数据类型的包装类,否则EL表达式无论使用那种方式都无法获取到相应的value。
点和[]操作符
点操作符:EL表达式通常由两部分组成:对象和属性。在EL表达式中,可以使用点操作符来访问对象的属性,例如 u s e r . i d 就 是 访 问 u s e r 对 象 的 i d 属 性 。 [ ] 操 作 符 : [ ] 操 作 符 也 可 以 访 问 对 象 的 属 性 , 例 如 {user.id}就是访问user对象的id属性。 []操作符: []操作符也可以访问对象的属性,例如 user.id访userid[][]访{user.id}也可以写成 u s e r [ “ i d ” ] 。 当 要 存 取 的 属 性 名 称 中 包 含 一 些 特 殊 字 符 , 如 “ . ” 或 “ − ” 等 非 字 母 或 数 字 的 符 号 时 , 就 需 要 使 用 [ ] 操 作 符 。 例 如 {user[“id”] }。当要存取的属性名称中包含一些特殊字符,如“.”或“-”等非字母或数字的符号时,就需要使用[]操作符。例如 user[id].使[]{user.my.id}应当改为 u s e r [ “ m y . i d ” ] 。 当 动 态 取 值 时 , 需 要 用 [ ] 操 作 符 来 做 , 而 点 操 作 符 无 法 做 到 动 态 取 值 , 例 如 在 {user[“my.id”] }。当动态取值时,需要用[]操作符来做,而点操作符无法做到动态取值,例如在 user[my.id][]{sessionScope.user[index] }中,index时一个变量。
2.EL表达式中的运算符
1.1算数运算符
运算符号:+、-、*、/或div(没有按照最高精度保留结果的特点)、%或mod
在这里插入图片描述
在这里插入图片描述
注意:单引号和双引号都可以。
在这里插入图片描述
1.2关系运算符
运算符符号:= =或eq、!=或ne、<或lt(即less than)、>或gt(即great than)、<= 或 le、>= 或 ge
在这里插入图片描述
在这里插入图片描述
1.3逻辑运算符
运算符符号:&& 或 and、|| 或 or、! 或 not(注意:只能对boolean型数据运算)
在这里插入图片描述
1.4empty运算符
在这里插入图片描述
说明:如果集合或数组中没有数据,或者其值为null,则empty判断为true,not empty判断为false
jstl标签库:
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开源代码的JSP标签库
1.jstl函数库
1.1如何使用:
a、向web工程lib文件中导入相应的jstl jar文件
b、引入jstl函数库
在这里插入图片描述
注意:jstl函数只能在${}中使用
1.2fn:toLowerCase:返回字符串小写格式
1.3fn:toUpperCase:返回字符串大写格式
在这里插入图片描述
1.4fn:trim:返回删除原字符串首尾空格后的字符串
1.5fn:length:返回字符串、集合或数组的长度

在这里插入图片描述
注意:${}中可以有多个jstl函数
在这里插入图片描述

1.6fn:split:返回依照指定字符串分隔符分割的字符串数组数,第一个参数为待分割字符串,第二个参数为字符串分隔符
在这里插入图片描述
1.7fn:join:依照字符串间隔符连接字符串数组元素并返回合并后的结果字符串,第一个参数为待合并的字符串数组,第二个参数为间隔符字符串。
在这里插入图片描述
注意:fn:join方法只对元素为String类型的数组进行元素拼接。
1.8fn:indexOf:返回指定字符串在某个字符串中第一次出现的索引值,返回值为int类型,如果没有找到则返回-1,第一个参数为待查找的字符串,第二个参数为要查找的字符串
在这里插入图片描述
注意:jstl函数库中没有fn:lastIndexOf函数
1.9fn:contains:判断一个字符串中是否包含指定的字符串,第一个参数为待判断字符串,第二个参数为判断字符串,返回值为布尔类型。该函数对比较的两个字符串大小写敏感,而fn:containsIgnoreCase则对大小写不敏感
在这里插入图片描述
在这里插入图片描述
1.10 fn:startsWith:判断某个字符串是否以指定字符串开头,返回值为布尔类型。
1.11 fn:endsWith:判断某个字符串是否以指定字符串结尾,返回值为布尔类型。

1.12 fn:replace:将某个字符串中包含的指定子字符串替换为其它的指定字符串,并返回替换后的结果字符串。第一个参数为原字符串,第二个参数为原字符串中要被替换的子字符串,第三个参数为被替换成的字符串。

1.13 fn:substring:用于截取某个字符串并返回截取到的子字符串。第一个参数为源字符串,第二个参数为截取开始的索引值,第三个参数为截取结束的索引值,其中第二个参数和第三个参数都是int类型,其值都从0开始。

1.14 fn:substringAfter:用于截取并返回一个字符串中的指定字符串第一次出现之后的字符串。第一个参数为源字符串,第二个参数为指定字符串
1.15 fn:substringBefore:用于截取并返回一个字符串中的指定字符串第一次出现之前的字符串。第一个参数为源字符串,第二个参数为指定字符串

2.jstl标签库
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
2.1 表达式标签:out标签、set标签、remove标签、catch标签。
2.1.1 out标签,该标签用于显示数据,如下语法:
<c:out value=”所显示的数据” [escapeXml=”true|false”] [default=”默认值”]/>,其中escapeXml属性用来设定是否对所显示的数据中的html标签或者JavaScript脚本进行解析,默认true,即不解析;default属性用于设置默认值,该默认值在value没有数据的情况下显示。
a、在这里插入图片描述 原样输出,相当于escapeXml=“true”时
b、 在这里插入图片描述JavaScript脚本会执行
2.1.2 set标签,该标签用于在jsp中声明变量,如下语法:
<c:set var=”key” value=”值”[scope=”page|request|session|application”]/>,scope用于指定把一个变量名为key值为“值”的变量存储范围标签
a、在这里插入图片描述,jsp页面显示小王,同属一个工程中的其它含有${userName}的jsp页面不会显示小王,因为这时数据默认适用范围为page
b、

在这里插入图片描述
其所在jsp页面显示小王,同属一个工程中的其它含有${userName}的jsp页面也会显示小王
2.1.3 remove,该标签用于移除指定的scope范围内的变量,如下语法:
<c:remove var=”变量名” [scope=”page|request|session|application”]/>
a、在这里插入图片描述
2.2 流程控制标签:if标签、choose标签、when标签、otherwise标签。
2.2.1 if标签,该标签和Java中的if条件语句一样,用于实现条件控制
<c:if test=“testCondition” [var=“varName”] [scope="{page|request|session|application}"]>
      标签体内容
     </c:if>
   【说明】:
     (1)test属性用于存放判断的条件,一般为EL表达式。
     (2)var属性用于存放判断结果,类型为true或false。
     (3)scopes属性用于指定var属性存放的范围。
a、在这里插入图片描述
2.2.2 choose标签、when标签和otherwise标签,这三个标签一般一起使用,用于构造类似Java中 “if-else if-else” 的复杂条件判断。注意:choose标签是其它两个标签的父标签
a、在这里插入图片描述
2.3 循环标签:forTokens标签和forEach标签,forEach标签用于遍历集合或数组中的数据,如下语法:
<c:forEach var=”name” items=”集合或数组” [varStatus=”status”]
[begin=”begin”] [end=”end”] [step=”step”]>
循环体
</c:forEach>
【说明】:
   (1)var设定变量名,该变量名用于存储从集合或数组中遍历出来的元素数据。
   (2)items指定要遍历的集合。
   (3)varStatus设定变量名,该变量名保存了循环进行过程中的状态信息,
包括:index(当前循环索引)、count(循环的次数)、first(是否为第一个位置)和last(是否为最后一个位置)。
   (4)begin、end用于指定遍历的起始位置和终止位置。
   (5)step指定循环的步长,默认为1。
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

EL表达式和jstl标签只能用在JSP文件中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值