EL表达式和JSTL(JSP标准标签库)

EL表达式语言简介:

Expression Language 表达式语言

  • 最初定义为JSTL1.0部分
  • 在JSP2.0中,EL从JSTL中剥离出来,放置在JSP规范中,称为JSP2.0规范的一部分
  • 在JSP中使用EL表达式,可以简化对象和变量的访问
    • 如:在jsp中我们可以通过以下办法获取user对象的userName属性:
    • <%=user.getUserName()%>
    • 但是使用EL表达式我们可以这样获取
    • ${user.userName}
  • EL表达式优点
    • 语法简单,所有的EL都是以”${”开始以”}”结束
    • 使用方便,功能强大
  • EL表达式使用范围
    • 可以在模板数据中使用,如
    • ${user.userName}
    • 可以在JavaScript和自定义标签中使用
    • 但是不能在JSP脚本元素中使用
  • EL基本语法
    • 语法格式:${表达式}
  • 注意:
    • 当表达式没有指定变量或者对象的范围时,那么容器会依次从page—>request—>session—>application中查找该变量或对象
    • 当然在访问对象或者变量时,可以指定对象或者变量的范围如
      • ${pageScope.userName} 从pageContext中取出变量userName值
      • ${requestScope.userName} 从request范围中取出变量userName值
      • ${sessionScope.userName} 从session范围中取出变量userName值
      • ${application.userName} 从application范围中取出变量userName值
  • EL使用 [] 和 . 操作符来访问数据
    • ${user.userName}
    • ${user[“userName”]}
  • [] 和 . 操作符的区别
    • []左边的变量可以是Map,JavaBean,List或者数组
    • . 左边的变量只能是一个JavaBean
    • EL表达式和JSTL(JSP标准标签库)_第1张图片

       

  • 在EL表达式中支持以下种类的运算符
    • empty
    • 算术运算符
    • 比较运算符
    • 逻辑运算符
    • 条件运算符
  • empty运算符,用于判断对象是不是null或者空(长度为0)
    • 如 :当集合对象list是null或者元素个数为0时,${empty list}运算结果为true
    • EL表达式和JSTL(JSP标准标签库)_第2张图片

       

  • EL表达式语言中支持的算术运算符有:

运算符

作用说明

表达式实例

实例结果

+

加法

${1+3}

4

-

减法

${1-3}

-2

*

乘法

${1*3}

3

/  (也可用div关键字)

除法

${1/3}

0.3333333333333

% (也可用mod关键字)

取模

${1%3}

1

EL表达式和JSTL(JSP标准标签库)_第3张图片

  • EL表达式支持的比较运算符有:

运算符

作用说明

表达式实例

实例结果

> 或关键字gt

大于

${ 1 > 2 }

false

< 或关键字lt

小于

${ 1 < 2 }

true

>= 或关键字ge

大于等于

${ 1 >= 2 }

false

<= 或关键字le

小于等于

${ 1 <= 2 }

true

== 或关键字eq

等于

${ 1 == 2 }

false

!= 或关键字ne

不等于

${ 1 != 2 }

true

EL表达式和JSTL(JSP标准标签库)_第4张图片

  • EL表达式语言中支持的逻辑运算符有

运算符

作用说明

表达式实例

实例结果

&& 或 and

与运算

${false && true}

false

|| 或  or

或运算

${false || true}

true

! 或 not

非运算

${!false}

true

EL表达式和JSTL(JSP标准标签库)_第5张图片

  • EL表达式语言支持条件运算符的使用
  • 条件表达式使用语法
    • ${条件 ? 表达式 : 表达式}
  • 条件表达式的实例:
  •  

  • EL表达式语言内置对象:
    • 为了在JSP中方便使用EL表达式,EL表达式语言提供了以下内置对象

对象名

对象作用说明

pageScoe

用于表示当前页面范围的对象

requestScope

用于表示当前请求范围的对象

sessionScope

用于表示当前会话范围的对象

applicationScope

用于表示当前应用范围的对象

pageContext

用于表示JSP中的pageContext对象

param

用于表示请求参数对象,作用同request.getParameter(String name)

paramValues

用于表示请求参数对象,作用同request.getParameterValues(String name)

  • EL内置对象的使用

EL表达式和JSTL(JSP标准标签库)_第6张图片

  • 请求参数的自动类型转换

EL表达式和JSTL(JSP标准标签库)_第7张图片

  • JSTL
    • JavaServer Pages Standard Tag Libray
    • 中文翻译为:JSP标准标签库
    • JSTL由sun公司制定,Apache的Jakarta小组负责实现,最新的JSTL版本为1.2,JSTL1.2需要至少支持Servlet2.5、JSP2.1的Servlet容器
    • JSTL的目标是简化JSP页面的开发
  • JSTL标签库根据用途不同分为:
    • 核心标签库
    • 国际化标签库
    • SQL标签库
    • xml标签库
    • 函数库
  • 如果需要在JSP中使用JSTL,需要使用JSP的taglib指令元素将JSTL引入到当前页面中,引入taglib指令元素的语法:

<%@ taglib uri=“标签库的URI” prefix =“标签库前缀” %>

  • 不同标签库的uri和prefix如下表:

功能范围

uri

prefix

 核心标签库

 http://java.sun.com/jsp/jstl/core

 c

 国际化标签库

 http://java.sun.com/jsp/jstl/fmt

 fmt

 SQL标签库

 http://java.sun.com/jsp/jstl/sql

 sql

 xml标签库

 http://java.sun.com/jsp/jstl/xml

 x

 函数库

 http://java.sun.com/jsp/jstl/function

 fn

  • 核心(core)标签库使用前首先通过指令元素taglib引入,core标签库引入的方式为:

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

  • 核心标签库中标签分类:
    • 一般用途的标签:out/set/remove/catch
    • 条件标签:if/choose/when/otherwise
    • 迭代标签:forEach/forTokens
    • URL相关的标签:import/url/redirect/param
  • 一般用途的核心标签(不常用)

EL表达式和JSTL(JSP标准标签库)_第8张图片

  • 标签中的value属性一般都可以使用EL表达式从指定范围中取值,也可以是普通字符串,如果为普通字符串可直接将字符串常量值作为value属性值即可
  • 条件标签
    • 用于做逻辑判断,选择执行某块代码或者输出HTML内容

EL表达式和JSTL(JSP标准标签库)_第9张图片

  • c:if>标签属性:
    • test :必须属性,为条件表达式,当条件表达式为true时执行标签中内容,否则不执行。
    • var :可选属性,为变量名,该变量中存放test条件表达式运算结果
    • scope : 可选属性,为范围选项,指定var变量存储的范围
  • 多分支选择结构标签//
    • 以上三个标签配合使用,必须出现在
    • 无属性,仅仅用于将多分支选择结构包裹起来

EL表达式和JSTL(JSP标准标签库)_第10张图片

  • 迭代标签
    • 用于对集合或者数组进行迭代,重复执行它的标签体,或者重复迭代固定次数
    • EL表达式和JSTL(JSP标准标签库)_第11张图片

       

 

  • items属性: 用于指定待迭代的集合或者数组
  • var属性:用于存储迭代出的元素的变量
  • varStatus属性:用于存储迭代状态对象,迭代状态对象有index、count、odd、even、first、last属性
  • 迭代标签
    • 可以充当普通for选项
    •  

  • 常用核心标签
    • 用于包含网络资源到当前JSP页面,类似

  • 国际化(fmt)标签库使用前首先通过指令元素taglib引入,fmt标签库引入的方式为:

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

  • 常用的国际化标签有:
    • 格式化日期:
    • 格式化数字:
  • JSTL包含一系列标准函数(注意不是标签),大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

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

  • 常用的函数有:
    • fn:length()
    • fn:endsWith()
    • fn:indexOf()
    • fn:replace()
    • fn:substring()
  • 函数库使用实例
  • EL表达式和JSTL(JSP标准标签库)_第12张图片

     

 

你可能感兴趣的:(EL表达式和JSTL(JSP标准标签库))