如果在
jsp
中嵌入
java
代码容易导致结构复杂,使得程序可读性差,不易维护。
EL
表达式使
JSP
的开发变得更加简单
EL
表达式的作用是来简化我们保存在作用域中的数据
本章将实现无java代码嵌入的jsp页面开发
EL表达式简介

EL表达式语法

按照page-request-session-application的作用域顺序依次查找,找到则返回,最终
找不到返回
null
通过变量值取值------>${变量名} 或 ${requestScope.变量名}
获取对象的属性值
------>${
对象
.
属性名
}
或
${
对象名
["
属性名
"]}
获取集合元素
------>${list
集合名称
["
索引
"]}
或
${Map
集合名称
["key"]}
或
${Map
集合名称
.
key}
注意:如果
map
的
key
值是数值,类型一定要是长整型的
integer
,同时要使用
${Map集合名称["key"]}这种方式获取值Map<
对象数据类型
, >
执行表达式
------>
关系操作符、逻辑操作符、
Empty
操作符
EL隐式对象
参数访问对象:是与页面输入参数有关的隐式对象,通过他们可以得到用户的请求参数

参数访问对象
param
和
paramValues
区别
param
对象用于得到请求中单一名称的参数
paramValues
对象用于得到请求中的多个值
JSP
隐式对象
他是
jsp
和
el
的一个公共对象,通过
pageContext
可以访问其他八个
JSP
内置对象
JSTL

JSTL
是
jsp
标准标签库
优点:提供了一组标准标签;可以用于编写各种动态功能
使用
JSTL
的步骤:
(myeclips
默认带了对
jstl
的支持,而
eclipse
没有
)
1)
引入
jstl
的
jar
文件
jstl.jar
和
standard.jar
2)
在
jsp
页面添加
taglib
指令
<%@
taglib
uri
=
"http://java.sun.com/jsp/jstl/cor
e"
prefix
=
"c"
%>
taglib
指令通过
uri
属性引用某个标签库的配置文件,
jsp
页面通过
prefifix
属性指定的前缀即可访问该标签库中的某个标签功能,语法如
标签名
>
3)
使用
jstl
标签

通用标签
通用标签用于在
jsp
页面内设置
,显示
和删除
变量
标签
标签用于设置作用域变量的值或者作用域变量的属性值
语法
1
:设置指定范围内的变量值
设置的变量名
" value="
赋予变量的值
" scope="
变量的作用域
"/>
注意:作用域可选的值
page(
默认
)
、
request
、
session
、
application
语法
2
:将
value
值设置到对象的属性中
操作该对象 使用
el
表达式
" property="
该对象的属性名
" value="
赋予该对象属性的值"/>
标签
标签用于将计算的表达式结果输出显示
语法
1
:设置值
value
属性指需要输出的表达式的运算结果,可以通过
EL
表达式来获取
语法
2
:指定默认值
default
属性是
value
属性值为空时输出的默认值。
语法
3
:转换特殊字符
标签还有一个
escapeXml
属性,表示是否转换特殊字符,用于指定在
使用
标签输出诸如
"<"
、
">"
、
"
、
"&
之类在
HTML
和
XML
中具有特殊意
义的字符时是否应该进行转义。
escapeXml
属性设置为
true
,则会自动进行转
义处理,这也是默认值。
从效果上可以看出将标签的属性escapeXml设置为false与直接使用el
表达式效果相同。
标签
删除指定范围内的变量
语法:
指定移除的变量名
" scope="
移除变量所在的作用域
"/>

条件标签
JSTL
的条件标签包括
、
和
用于实现
JAVA
语言中
if
语句的功能
语法:
判断条件
(
可以用
EL
表达式
)" var="
变量
" scope="
变量的存储范围
">
.........
主体部分
....
test
属性是判断条件,可以用
EL
表达式,结果为
true
时,会执行主体部分,为
false不会执行
var
属性定义变量,该变量存放判断的结果,该属性可省略
scope
属性是指
var
定义变量的存储 范围,可选值有
page
、
request
、
session、
application,该属性可省略
、
和
一起实现互斥条件的执行,类似于
java
语言的if-else if -else
语句
语法:
内容
1
内容
2
内容
n
与上面的
when
都不匹配 才执行的
迭代标签
JSTL
的迭代标签
语法
1
:遍历集合对象的成员
当前成员的引用
" items="
集合对象
" varStatus="
存放
var
引用成员
的相关信息,如索引等
"
begin="
开始位置 可省略
" end="
结束位置 可省略
" step="
循环的步长 可省略
">
...
循环体代码
...
语法
2
:指定迭代的次数
当前成员的引用
" varStatus="
存放
var
引用成员的相关信息,如索
引等
"
begin="
开始位置 可省略
" end="
结束位置 可省略
" step="
循环的步长 可省略
">
...
循环体代码
...
格式
2
与格式
1
的区别:格式
2
不是对一个集合对象的遍历,而是根据指定的
begin
属性、end
属性以及
step
属性执行主体内容固定的次数
二道小问题
一、
JSTL
中常用的标签有哪些
答案:
JSTL提供的常用标签包括:通用标签,迭代标签,条件标签
通用标签:主要是在
JSP
页面中实现对变量的设置,删除和显示
迭代标签:主要是为了在
JSP
页面中实现对集合对象的循环遍历,显示集合元素
条件标签:主要是实现条件判断
二、
EL
表达式中提供了哪几个隐式对象?分别有什么作用?
EL的隐式对象包括:作用域访问对象,参数访问对象,
JSP
隐式对象。
作用域访问对象:在相应的范围内对属性名及属性值进行映射
1、
pageScope
对象
2、
requestScope
对象
3、
sessionScope
对象
4、
applicationScope
对象
参数访问对象 :
1、
param
对象:将请求中的参数的名字和单个的字符串值进行映射,主要是用于获取参数值。
2、
paramValues
对象:将请求中的参数名字和一个包含了该参数所有值的
String
类型的数组进行映
射,主要用于获取请求中的参数值。
JSP隐式对象:
pageContext
,利用该对象可以对
Servlet
以及
JSP
的上下文进行访问,实现
JSP
之间的 共享数据。