EL表达式
1.初识JavaBean
1.1 什么是javaBean:
它是java开发中常用的组件,其实就是一个java类,它的作用就是封装数据。
书写JavaBean需要满足五个规范:
>>>1.这个java类,被public修饰
>>>2.这个java类要提供公共的无参数的构造方法
>>>3.要提供私有的属性
>>>4.要给私有的属性提供公共的set或者get方法
>>>5.要实现Serializable接口
比如:
public class Book implements Serializable{
private String id;
private String name;
public Book(){};
public void set----
public String get—
}
1.2 访问JavaBean的属性:
类的成员变量和属性的一个关系:
在普通的java类里面,成员变量可以说成就是属性。
在JavaBean里面,成员变量和属性就有了区别。
在JavaBean 里面什么是成员变量呢? 比如:private String id; 那么id就是成员变量
在JavaBean 里面什么是属性?就是get或者set后面的字段名称(字段名称的首字母小写),就是属性。
比如:
public class Student {
//一下就是javaBean的四个成员变量
private String sid;//目的就是为了接收外界传递过来的值
private String name;
public Student() {
}
//属性由get或者set方法后面的字段首字母小写就是属性,属性就是id
public String getId() {
return sid;
}
public void setId(String id) {//写方法,给student写一个id
this.sid = id;
}
//属性就是name
public void setName(String name) {
this.name = name;
}
}
上面的Student的属性就是id ,name。成员变量就是sid,name.
1.3 BeanUtils 工具
BeanUtils 工具是由apache软件基金会提供的一套封装数据到JavaBean的工具类,使用简单方便,
BeanUtils是第三方的工具(插件),所以需要导入jar包。
常用的api:
>>> 1.向javaBean的属性设置值:
setProperty(javaBean对象,javaBean的属性,javaBean属性的值);
>>> 2.获取javaBean属性的值:
getProperty(javaBean对象,javaBean的属性);
>>> 3.向javaBean的属性设置值:
populate(javaBean对象,map对象);
注意:map的对象的key(就是javaBean属性名称),必须和javaBean的属性名一致,才能给javaBean的属性设置值。
提交的表单数据想封装到javaBean对象里面,要求表单name属性的值,必须和javaBean属性名称一一对应。
2.EL 表达式
1.1 初识 EL 表达式
EL在开发中,通常是用来获取域对象中保存的值,基本语法:${域对象的名称}。
比如说: request.setAttribute(“key”,“value123”):
k
e
y
,
获
取
的
值
就
是
v
a
l
u
e
123
如
果
域
对
象
的
名
称
写
错
了
,
使
用
e
l
表
达
式
获
取
值
,
获
取
的
是
"
"
.
1.2
E
L
表
达
式
中
的
标
识
符
在
e
l
书
写
过
程
中
,
会
用
一
些
符
号
来
标
记
变
量
、
函
数
名
等
,
这
些
符
号
称
之
为
标
识
符
。
书
写
规
范
:
1.
不
能
以
数
字
开
头
2.
不
能
包
含
e
l
中
的
关
键
字
:
a
n
d
,
o
r
等
3.
不
能
使
用
e
l
表
达
式
的
隐
式
对
象
。
4.
不
能
包
含
特
殊
符
号
,
比
如
正
斜
杠
等
1.3
E
L
中
的
变
量
基
本
格
式
:
{key},获取的值就是value123 如果域对象的名称写错了,使用el表达式获取值,获取的是"". 1.2 EL表达式中的标识符 在el书写过程中,会用一些符号来标记变量、函数名等,这些符号称之为标识符。 书写规范: 1.不能以数字开头 2.不能包含el中的关键字:and , or 等 3.不能使用el表达式的隐式对象。 4.不能包含特殊符号,比如正斜杠等 1.3 EL中的变量 基本格式:
key,获取的值就是value123如果域对象的名称写错了,使用el表达式获取值,获取的是"".1.2EL表达式中的标识符在el书写过程中,会用一些符号来标记变量、函数名等,这些符号称之为标识符。书写规范:1.不能以数字开头2.不能包含el中的关键字:and,or等3.不能使用el表达式的隐式对象。4.不能包含特殊符号,比如正斜杠等1.3EL中的变量基本格式:{域对象的名称},这个域对象的名称可以理解为就是el中的变量,
那这个变量就不需要定义了,可以直接使用。
1、EL简介
1)语法结构
${expression}
2)[]与.运算符
EL 提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。
例如:
u
s
e
r
.
M
y
−
N
a
m
e
应
当
改
为
{user.My-Name}应当改为
user.My−Name应当改为{user[“My-Name”] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
s
e
s
s
i
o
n
S
c
o
p
e
.
u
s
e
r
[
d
a
t
a
]
中
d
a
t
a
是
一
个
变
量
3
)
变
量
E
L
存
取
变
量
数
据
的
方
法
很
简
单
,
例
如
:
{sessionScope.user[data]}中data 是一个变量 3)变量 EL存取变量数据的方法很简单,例如:
sessionScope.user[data]中data是一个变量3)变量EL存取变量数据的方法很简单,例如:{username}。它的意思是取出某一范围中名称为
username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、
Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,
就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4) 1–EL表达式用
表
示
,
可
用
在
所
有
的
H
T
M
L
和
J
S
P
标
签
中
作
用
是
代
替
J
S
P
页
面
中
复
杂
的
J
A
V
A
代
码
.
2
−
−
E
L
表
达
式
可
操
作
常
量
变
量
和
隐
式
对
象
.
最
常
用
的
隐
式
对
象
有
{}表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码. 2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有
表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码.2−−EL表达式可操作常量变量和隐式对象.最常用的隐式对象有{param}和${paramValues}.
${param}表示返回请求参数中单个字符串的值.
p
a
r
a
m
V
a
l
u
e
s
表
示
返
回
请
求
参
数
的
一
组
值
.
p
a
g
e
S
c
o
p
e
表
示
页
面
范
围
的
变
量
.
r
e
q
u
e
s
t
S
c
o
p
e
表
示
请
求
对
象
的
变
量
.
s
e
s
s
i
o
n
S
c
o
p
e
表
示
会
话
范
围
内
的
变
量
.
a
p
p
l
i
c
a
t
i
o
n
S
c
o
p
e
表
示
应
用
范
围
的
变
量
.
止
.
J
S
P
2.0
中
默
认
的
启
用
E
L
语
言
.
4
−
−
E
L
语
言
可
显
示
逻
辑
表
达
式
如
{paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话 范围内的变量.applicationScope表示应用范围的变量. 止.JSP2.0中默认的启用EL语言. 4-- EL语言可显示 逻辑表达式如
paramValues表示返回请求参数的一组值.pageScope表示页面范围的变量.requestScope表示请求对象的变量.sessionScope表示会话范围内的变量.applicationScope表示应用范围的变量.止.JSP2.0中默认的启用EL语言.4−−EL语言可显示逻辑表达式如{true and false}结果是false 关系表达式如${5>6} 结
果是false 算术表达式如 ${5+5} 结果是10
5–EL中的变量搜索范围是:page request session application 点运算符(.)和"[ ]"都是
表示获取变量的值.区别是[ ]可以显示非词类的变量
2、EL隐含对象
1)与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和
applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得
其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute(“username”) 取得username的值,
在EL中则使用下列方法
${sessionScope.username}
2)与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
2.web域相关的对象
域作用范围从小到大:pageContext--->request--->session--->application(servletContext)
el表达式获取域对象中的值:如果域对象的名称相同,获取的是域作用范围最小的值。
和pageContext对象的findAttribute方法的效果是一样的。
3.param 和 paramValues 对象: 获取表单提交的数据。
比如:
num1:
num2:
num3:
num1:${param.num1 }
num2:${paramValues.num[0] }
num3:${paramValues.num[1] }
4. cookie 对象:获取cookie的名称,获取cookie的值
比如:
<% response.addcookie(new cookie("userName","itcast")); %>
获取cookie对象:${cookie.userName }
获取cookie的名称:${cookie.userName.name }
获取cookie的值:${cookie.userName.value }



