JavaWeb(EL表达式和JSTL)

本文详细介绍了JavaWeb中的EL表达式和JSTL。内容包括EL中的标识符、关键字、变量、常量、运算符以及JSTL的Core标签库,如<c:out>、<c:if>、<c:forEach>等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七章 EL表达式和JSTL

数据和功能重复使用,便于移植,Sun公司提出“JavaBean技术”,使用JavaBean技术可以对这些数据和功能进行封装,做到一次编写,到处运行。
为了降低JSP页面的复杂度,增强代码重用性,Sun公司制定了一套标准标签库JSTL,同时为了获取Servlet域对象中存储的数据,JSP2.0规范里提供EL表达式

7.1 初识JavaBean

概述

重复使用的软件组件,本质上就是Java类。

  • 必须具有一个 公共的无参构造方法。
  • 提供公共的get set方法

BeanUtils工具

方法声明功能描述
static void populate(Object bean,Map<String,?extends Object> properties)根据指定的名称/值为相应的JavaBean属性设置值
static void setProperty(Object bean,String name,Object value)根据指定的属性值,传入的类型要求能转换成相应的属性的类型
static String getProperty(Object bean,String name)返回指定bean指定属性的值,返回值为String类型

7.2 EL表达式

为了获取Servlet域对象中存储的数据,代码更简洁方便

EL中标识符正斜杠

使用符号标记一些名称,如变量名、自定义函数名等,这些符号被称为标识符。EL标识符由任意大小写字母、数字和下划线组成。

  • 不能那个以数字开头
  • 不能是EL中的关键字
  • 不能是隐式对象
  • 不能包含单引号(’)、(")、(-)和 (/)等特殊字符。

EL中的关键字

and eq gt true instanceof or ne le false empty not lt ge null div mod

EL中的变量

${product}

常量

EL中的常量又称为字面量,它是不能改变的数据。

  1. 布尔常量
    true or false
  2. 整型常量
    取值范围是Java语言定义的常量Long.MIN_VALUE 到 Long.MAX_VALUE 之间
  3. 浮点数常量 双精度
  4. 字符串常量
    本身包含的单引号双引号反斜杠需要进行转义, 前面再加个反斜杠()
  5. Null常量
    Null常量用于表示变量引用的对象为空,只有一个值null

EL中的运算符

点运算符(.) 方括号运算符( [] ) 算术运算符( + - * /或div %或mod )

比较运算符

==(eq) !=(ne) <(it) >(gt) <=(le) >=(ge)
避免与JSP页面的标签产生冲突,后面四重通常用括号内的。

逻辑运算符

&&(and) ||(or) !(not)

empty运算符

判断某个对象是否为null或者" "
${empty var}
变量不存在,变量值为null, 变量为集合且不包含任何元素

条件运算符

${A?B:C}

“()”运算符

优先级

优先级运算符
1[]
2()
3- not ! empty
4* / div % mod
5+ -
6< > <= >= lt gt le ge
7== != eq ne
8&& and
9or 短路或
10? :

注意: EL表达式取值,没有数组的下标越界,没有空指针异常,没有字符串的拼接。

EL隐式对象

隐含对象名称描述
pageContext对应于JSP页面中的pageContext对象 ,可以获取jsp其他八个隐式对象
pageScope代表page域中用于保存属性的Map对象
requestScope代表request域中用于保存属性的Map对象
sessionScope代表session域中用于保存属性的Map对象
applicationScpope代表application域中用于保存属性的Map对象
param保存所有请求参数的Map对象
paramValues保存所有请求参数的Map对象,对于某个请求参数,返回的是一个String类型数组
header保存了所有HTTP请求头字段的Map对象
headerValues保存所有HTTP请求头字段的Map对象,返回String类型数组
cookie用来取得使用者的cookie,cookie类型是Map
initParam保存了所有Web应用的初始化参数的Map对象

7.3 JSTL

降低JSP页面的复杂度,增强代码重用性。Sun公司定制了一套标准标签库,简称JSTL。

什么是JSTL

JSTL虽然被称为标准标签库,实际上这个标签库由5个不同的标签库共同组成

标签库标签库的URI建议使用前缀
Corehttp://java.sun.com/jsp/jstl/corec
l18nhttp://java.sun.com/jsp/jstl/fmtfmt
SQLhttp://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
Functionshttp://java.sun.com/jsp/jstl/functionsfn
  • Core
    核心标签库 实现Web应用通用操作的标签 。例如 <c:out> <c:if> <c:forEach>
  • l18n
    国际化或格式化标签,包含实现Web应用中国际化标签和格式化标签。例如,JSP页面的本地信息,设置JSP页面的时区,使日期按照本地格式显示等。
  • SQL标签库
    包含用于访问数据库和对数据库中的数据进行操作的标签。数据库中获得数据库连接,从数据库表中检索数据等。一般不用
  • XML
    一个操作文档的标签库,包含对XML文档中数据进行操作的标签。解析XML文件,输出XML文档中的内容,迭代处理XML文档中的元素。处理XML文档很方便
  • Functions
    函数标签库,提供一套自定义EL函数,包含了JSP网页制作者经常用到的字符串操作。
<%@ taglib  uri=" xxx " prefix="x" %>
//使用taglib指令导入Core标签库

Core标签库

  • <c:out>
<c:out value="value" [default="defaultValue"] // 默认值
[escapeXml="true|false"]/>//特殊字符是否HTML转码
  • <c:if>
<c:if text="textCondition" var="result" //条件  变量
[scope="{page | request | session | application }"] > //变量范围
标签体 //条件为真执行标签体
</c:if> 
  • <c:choose>
    有点类似switch,与<c:when> <c:otherwise>
<c:choose>
<c:when test="${xxx}">
xxx
</c:when>
<c:otherwise>
xxx
</c:otherwise>
</c:choose>
  • <c:forEach>
    对集合对象进行循环迭代操作,Set List Map 数组 等
//语法1: 迭代包含多个对象的集合
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
[begin="begin"] - [end="end"]  - [step="step"]
body content
</c:forEach>
//语法2: 迭代指定范围的集合
<c:forEach [var="varName"] - [varStatus="varStatusName"] begin="begin"
end="end" [step="step"]>
body content
</c:forEach>
  1. var当前迭代元素保存到page域中的名称
  2. items 用于指定要迭代的集合
  3. varStatus 指定当前迭代状态信息的对象保存到page域中的名称
  4. begin从第几个元素开始迭代 索引从0开始 没有指定items 从begin指定值开始迭代
  5. step迭代步长 迭代因子的增量

varStatus内属性

  1. count:集合内序号 1开始
  2. index: 索引 0开始
  3. first 是否为集合中第一个元素
  4. last 是否为集合中最后一个元素
  • <c:param> 和<c:url>
    前者获取参数,后者用于重新构造URL
    <c:param>一般嵌套在<c:url>中,在URL地址中附加参数
  1. value,指定构造的URL
  2. context 指定导入同一服务器下其他Web应用的名称
  3. var 属性 指定构造的URL保存到域中的属性名称
  4. scope属性 指定保存到域对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值