EL与JSTL

本文详细介绍了EL(Expression Language)和JSTL(JSP Standard Tag Library)在JSP中的使用。EL提供了一种方便的方式来访问不同作用域的对象,包括显示数据、使用点操作符和[]操作符以及各种运算符。JSTL则是一个标签库,包括函数库和一系列标签,如if、choose、forEach等,用于实现更复杂的页面逻辑和数据处理。
摘要由CSDN通过智能技术生成

EL表达式

定义:EL(Expression Language 表达式语言)定义了一系列隐含对象和操作符,无须Java代码即可方便地访问pageContext、request、session、application作用域中的对象。

1.EL表达式显示数据

1.基本数据类型与String类型      ${key(setAttribute中的key)

2.自定义类型            

a、在页面中要显示的自定义类成员变量必须要有getter;

b、如何显示:${key(setAttribute中的key).成员变量名}

例如

3.集合或数组

a、对于list等有序集合,可以直接${list[0] }进行显示,也可以用ELST的forEach进行遍历集合。

b、对于map、set等无序集合,只能用ELST的forEach进行遍历集合。

c、对于数组,可以直接${numbers[0] }进行显示,也可以用ELST的forEach进行遍历集合。

d、对于set集合,无法获取单个元素,只能使用<c:forEach>遍历集合

注意:

  1、Map集合的key最好符合Java标识符规范,如果不符合,则在EL表达式中不能使用.的方式获取到Map相应的value,只能通过[]的方式获取到相应的value;

 2、Map集合key的泛型不能是Java基本数据类型的包装类,否则EL表达式无论使用那种方式都无法获取到相应的value。

2.点和[]操作符

点操作符:EL表达式通常由两部分组成:对象和属性。在EL表达式中,可以使用点操作符来访问对象的属性,例如${user.id}就是访问user对象的id属性。

[]操作符:

       []操作符也可以访问对象的属性,例如${user.id}也可以写成${user[“id”] }。当要存取的属性名称中包含一些特殊字符,如“.”或“-”等非字母或数字的符号时,就需要使用[]操作符。例如${user.my.id}应当改为${user[“my.id”] }。当动态取值时,需要用[]操作符来做,而点操作符无法做到动态取值,例如在${sessionScope.user[index] }中,index时一个变量。

3.EL表达式中的运算符

1.算数运算符 

运算符号:+、-、*、/或div(没有按照最高精度保留结果的特点)、%或mod

${变量1 运算符号 变量2 }  例如求a与b的和为${a + b}  注意:不会按最高精度保留结果

并且可以进行两目与三目运算

 

2.关系运算符 

运算符符号:= =或eq、!=或ne、<或lt(即less than)、>或gt(即great than)、<= 或 le、>= 或 ge

${变量1 运算符号 变量2 }  例如判断a是否大于b为${a > b}

 

3.逻辑运算符

运算符符号:&& 或 and、|| 或 or、! 或 not(注意:只能对boolean型数据运算)

${变量1 运算符号 变量2 }  例如逻辑与 ${a && b}

 

4.empty运算符

用于判断集合或者数组是否为空或值为null,若为空,则判断为true,若不为空,则判断为false

判断list集合是否为空 ${empty list}

 

JSTL标签库

定义:JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开源代码的JSP标签库

1.JSTL函数库

1.使用方法:

a.向web工程lib文件中导入相应的jstl jar文件

b.引入jstl函数库

其中,前缀prefix可自定义,语句中其它成分都不可更改。

注意:jstl函数只能在${}中使用

2.语句

1、${fn:length(address) }        

fn:length:返回字符串、集合或数组的长度。

2、${fn:substring(address,0,10) }          

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

JSTL标签库

1.使用方法

a.同上

b.引入jstl标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

2.语句

1.表达式标签

a. set标签,用于在jsp中声明变量

<c:set var="name" value="Tom"></c:set>      

设置name的属性值为Tom。

 

b. out标签,用于显示数据

<c:out value="${name }"></c:out>       

输出name的值,与${name }作用相同,故一般少见

 

3. remove标签,用于移除变量

<c:remove var="name"/>    

移除名为name的变量

 

2.流程控制标签

 

a. if标签,该标签和Java中的if条件语句一样,用于实现条件控制

<c:if test="${a!=b }">           
            不等于
        </c:if>                 

判断test=“~”中的语句是否为true,如果为true,则输出if标签中的语句(这里是”不等于“)

 

b. choose标签,when标签与otherwise标签,一般一起使用,来构成类似“if——else if——else”的复杂条件判断

<c:choose>
     <c:when test="${fn:length(address)>10 }"> (满足test后语句则执行when语句中的操作)
         ${fn:substring(address,0,10) }...
     </c:when>
     <c:otherwise>                     (可有多个when标签,若所有when标签的test语句都不满足,则执行otherwise标签里的语句)
     ${address }
     </c:otherwise>
</c:choose>

c.  循环标签

<c:forEach var="s" items="${set }">     
            ${s }
        </c:forEach>

c:forEach:类似于java的foreach语法,s代表遍历时每一个成分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值