EL表达式与JSTL标签库

EL表达式:

EL表达式定义规则:

以$符号开头,内容写在{}中,例如:$(test)

当然。因为EL表达式所有的代码都是写在{ }中的,所以我们也可以在里面写运算。

比如:$(test+100)最终输出的结果就是test这个变量加上数字100后的值了。

再比如$(test!=null) 最终输出的结果就是一个true。

通过这种方式。我们可以通过这样的方式很好的和JSTL结合一起来使用。
EL中的运算符分为 . 和 [] 一起使用 。
假如要动态的取值。

可以使用[]:${session.user[date]}

其中date是一个变量。上面的代码意思就是取出session.user这个数组里面的第date个元素。需要注意的是,EL表达式限制了我们调用JAVA的方法,如果要想调用,可以自定义一个TAG。
EL表达式的查找顺序(都是针对Attribute()):
如果使用类似于$(username)的时候没有哪一个范围查找username,那么他会以:
1. page
2. request
3. session
4. application
为顺序进行查找,假如中途找到了username那么就会返回值。如果一路没找到返回null。

EL表达式的隐形变量:

通过隐形变量可以让我们更简便的完成很多复杂的操作:
pageContext:用来访问JSP的隐形对象。
pageScope:page对象的Map
requestScope:request对象的Map
sessionScope:session对象的MAP
applicationScope:application对象的MAP
param:包含请求的参数的字符串MAP
cookie:按照名称存储请求附带cookie的MAP

假设我们是想要session中的name值,那么我们可以使用:$(sessionScope.name)

我们先要获取GET或者POST传递过来的name参数,在以前我们只能使用:request.getParamter(name);

现在我们可以使用EL来替代:$(param.name)

同样:如果我们想要得到一个参数的数组,可以使用:$(paramValues.name),当然,返回的是一个数组对象。

EL关系运算符

这里写图片描述

EL逻辑运算符

这里写图片描述

JSTL标签库

要使用JSTL,首先要给工程导入JSTL的jar包。
JSTL标签库:
强调内容:
1. 核心标签
2. 格式化标签
3. SQL标签、
4. XML标签
5. JSTL标签
使用不同的标签的时候需要在JSP中引入不同的库。
核心标签(Core):

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

<c:set>标签

<c:set>等同于JSP中session的setAttribute()

使用:

<c:set  var="名字"  value="值"/>
或者
<c:set  var="名字">值</c:set>

<c:out>标签
<c:out>标签相当于JSP中的<%=%>
使用方法:

<c:out  value="需要输出的值">

这里可以使用EL表达式来进行输出session中的attribute
例如:

<c:set var="test"  value="这是一个测试">
<c:out  value="${test}">

输出结果:这是一个测试

<c:remove>标签

<c:remove><c:set>正好相反,是删除属性值的意思。
使用:
<c:remove  var="名字"/>

<c:if>标签

<c:if>标签等同于Java中的if语句
使用方法:
<c:if  test="条件"> 满足条件执行的JSP代码</c:if>

<c:catch>标签

<c:catch>类似于Java的try:
使用方法:
<c:catch  var="名字">JSP代码</c:catch>

如果在执行过程中,JSP代码发生了异常,那么将会复制名字给指定的参数,因此我们可以通过判断名字是否为null来判断是否有异常发生

<c:catch  var="testException">
<% int i=5/0;  %>
<c:/catch>
<c:if test="${testException!=null}">
    上面的代码有错误发生
</c:if>

输出结果:上面的代码有错误发生
如果将上面的0改为3则没有任何结果输出。

<c:choose>标签和<c:when>
<c:choose><c:when> 类似于Java中的switch和case
使用方法:(c:choose 中可以有多个c:when标签)

<c:choose>
    <c:when test="条件">
        处理代码
    </c:when>
</c:choose>

<c:otherwise>标签
此标签相当于Java switch中的default

使用方法:

<c:shoose>
    <c:otherwise>
        处理
    </c:otherwise>
</c:choose>

当choose中的when没有满足条件的时候,会执行otherwise中的内容。
注意:choose中的when和otherwise是一组when和otherwise必须写在choose中!!!
<c:import>标签
使用方法:

<c:import  var="date" url="http://ww.baidu.com"/>
通过上面的写法将百度的源代码返回到date变量,使用
<c:out  valur="${date}">输出

<c:foreach>标签和<c:forTokens>
类似于Java中的For循环和foreach循环
使用方法:

<c:foreach  var="名字(i)" begin="开始数字(1)" end="结束数字(5)">
${i}
</c:foreach>
输出结果是1  2  3  4  5

使用方法:

<c:forToken item="a,b,c,d,e" delis="," var="name">
${name}
</c:forTokens>
输出结果是:a  b  c  d  e  

foreach类似于Java中for循环 设置一个开始数字begin 设置一个结束数字end 然后每次循环都会将赋给var 另外还有set参数,里面可以设置值,意思是每次增加几个数。
forTokens类似于于Java中的foreach。在items中放入一个组,然后delims设置以什么分割,然后 将分割循环的数字赋给var 如果item中存放的是一个集合,那么可以不用写delims,这样每循环一次,就会取出集合中的一个放在var中。

<c:redirect>标签
类似于reponse中的sendRedirect响应重定向
使用方法:

<c:redirect url="http://www.baidu.com">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值