EL表达式和JSTL标准库

一、EL表达式

1、EL主要作用

  • EL 全名为Expression Language

1.1、获取数据

  • EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访javabean的属性、访问list集合、访问map集合、访问数组)
  • 使用EL表达式获取数据的语法:“${标识符}”
  • EL表达式可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据
${变量}
${name}
//获取对象的属性值
${对象名.属性名}
${user.name}
//获取集合元素
${对象名.size()}
${对象名[索引]}
${map集合对象名["key"]}//获取到map集合中的key所对应的value
  • EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)

1.2、执行运算

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。

<!--算数运算-->
${ + - * / % }
/:用div可代替

<!--逻辑运算符-->
&&(and)||(or)||!(not)

<!--关系运算符-->
<!-->(gt)  /<(lt)  />=(ge)  /<=(le)  /!=(ne)  /==(eq)-->

<!--empty运算符-->
empty:代表判断元素是否为null或者是是否包含元素
not empty:代表代表判断元素是否不为null或者是是否不包含元素

1.3、获取web开发常用对象

EL 表达式定义了一些隐式对象,利用这些隐式对象,可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ttpXHzmm-1660698402220)(…/assets/image-20220816220352771.png)]在这里插入图片描述

  • 作用域的访问对象

正常情况下,在使用EL表达式时,需要在表达式 中添加对应的作用域,例如 ${sessionScope.xxx},如果我没有书写作用域访 问对象,此时,EL表达式就会从page向requet 中查询,如果request没有对应的值就会找到 session查询,session如果范围内也没有,就会 最后找到application,如果几个作用域都不包含 要查找的值或对象,就会返回null状态。此时如 果我们调用某个对象的某个属性或方法,此时EL 表达式如果没有找到对象就会直接输出空白。

  • 参数访问对象
    • param相当于是在页面中调用了
    • request.getParameter(“”)来获取参数中的内容。
    • paramValues相当于在页面中调用了
    • request.getParameterValues(“”)来获取同名对 象的多个值,返回一个数组类型
  • JSP隐式对象

可以通过pageContext对象获取到该对象中的某 个值,同时还可以获取到页面中衍生出的各类内 置对象,例如可以通过 pageContext.request.contextPath获取到当前 项目的上下文路径。

<body>
<%--
    request.getScheme() 它可以获取请求的协议
    request.getServerName() 获取请求的服务器 ip 或域名
    request.getServerPort() 获取请求的服务器端口号
    getContextPath() 获取当前工程路径
    request.getMethod() 获取请求的方式( GET 或 POST )
    request.getRemoteHost() 获取客户端的 ip 地址
    session.getId() 获取会话的唯一标识
--%>
<%
pageContext.setAttribute("req", request);
%>
<%=request.getScheme() %> <br>1.协议: ${ req.scheme }<br>
2.服务器 ip:${ pageContext.request.serverName }<br>
3.服务器端口:${ pageContext.request.serverPort }<br>
4.获取工程路径:${ pageContext.request.contextPath }<br>
5.获取请求方法:${ pageContext.request.method }<br>
6.获取客户端 ip 地址:${ pageContext.request.remoteHost }<br>
7.获取会话的 id 编号:${ pageContext.session.id }<br>
</body>

1.4、调用Java方法

EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

二、JSTL核心

2.1、标准库导入

  • pow.xml导入三方依赖库
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
  • 导入页面
格式化库
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/f
mt" %>
核心库
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/c
ore" %>

2.2、基本函数使用

2.2.1、通用标签

2.2.1.1、set
  • 设置变量
<c:set var="变量名" value="" scope="request|session|application"/> *默认情况是page。
<c:set var="num" value="100" />
将一个对象中的属性进行修改
target:代表要修改的对象
property:要修改的对象中的属性
value:要修改的属性值
  • 修改变量值
<c:set target="${userInfo}"property="username"value="zhangsan" />
2.2.1.2、out
  • 等价于<%==%>
<c:out value="${num}" />
<c:out value="要输出的内容" default="没有找到对应的变量,就会采用default作为值输出"/>
2.2.1.3、remove
  • 删除属性
<c:remove var="变量" />
<!--删除后下文中不能使用-->

2.2.2、选择标签

2.2.2.1、if
  • if表达式是没有else的相关操作的
<c:if test="条件表达式"></c:if>
2.2.2.3、choose
  • 相当于switch
<choose>
<c:when test="条件表达式">
//满足条件
</c:when>
...
<c:otherwise>
//多个条件都不满足,就会执行该段
语句
</c:otherwise>
</choose>

2.2.3、循环标签

2.2.3.1、forEach
<c:forEach var="循环时的变量"items="集合|数组" begin="起始值"end="结束值" step="迭代步长"varStatus="循环属性变量" var="变量">
//循环体
</c:forEach>

2.3.格式化

2.3.1、数字格式化

<fmt:formatNumber value="12.34" pattern="#0.00" /> 12.34
保留小数点后两位数

2.3.2、日期格式化

<fmt:formatDate value="${templateUnit.creTime}" pattern="yyyy-MM-dd"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值