JSp之EL表达式

[1] 简介

  • Expression Language

  • 在JSP的后期版本(2.0以后),在页面中是不允许使用脚本片段<%%> 以及JSP表达式<%=%>的

  • 使用EL表达式来代替JSP表达式,而使用标签来代替脚本片段

  • EL表达式用于在页面中输出一个对象

  • EL可以直接将域中的对象在页面中输出

EL表达式的用途就是根据 域的属性名 获取属性值 。属性值为object类型,故而可以获取对象以及集合等。

${属性名}

[2] 基本语法

语法:${表达式}

EL可以用来做全域查找

  • 使用方式 ${属性名}

  • 会自动的按照由小到大的顺序从四个域中查找指定属性(page request session application)

  • 哪个先找到则返回哪个,如果没找到不会出现null,而是返回一个空串

  • EL中给我们提供了4个对象域

pageScope

requestScope

sessionScope

applicationScope

我们可以通过这四个对象去查找指定域中的属性

  • 使用方法

${xxxScope.属性名}

使用EL表达式时如果遇到含有特殊字符的属性名还可以使用如下方式获取属性值

${xxxScope[‘属性名’]}

特殊字符包括加减乘除等

${requestScope[‘Hello-Kitty’] }

JavaBean的查询

可以直接通过EL表达式获取域中的JavaBean的指定属性,例如request.setAttribute(“user”,user);

使用方法:

${对象.属性.属性}

原理:EL表达式会自动调用对象的get方法来获取指定的属性值。

> 查找指定域中属性

<!-- EL表达式只能读取域中的对象 -->

<!-- EL表达式中不能直接调用对象的方法 -->

<!-- 通过EL表达式来读取一个对象时,可以直接 对象.属性名 获取属性值 -->

<!-- 比如:对象.name  , EL会自动调用该对象getName方法来获取属性 -->

<!-- 如果对象的属性还有子属性我们可以继续通过点运算符获取-->

${requestScope.stu.address.street }

[3] 隐含对象

EL中给我们提供了11个隐含对象,我们可以在EL表达式中直接使用这11个对象

这11个隐含对象,除了pageContext剩下的全都是Map类型

pageContext

类型:PageContext

作用:和JSP中pageContext一样,可以获取到JSP中其他隐含对象

获取request对象 : ${pageContext.request }

获取项目名 : ${pageContext.request.contextPath}

pageScope

类型:Map< String,Object>

作用:获取page域中指定的属性

requestScope

类型:Map< String,Object>

作用:获取request域中属性

sessionScope

类型:Map< String,Object>

作用:获取session域中属性

applicationScope

类型:Map< String,Object>

作用:获取application域中属性

param

类型:Map< String,String>

作用:可以获取到用户发送的请求参数,点运算符连接${param.属性名}

获取name参数 : ${param.name }

paramValues

类型:Map< String,String[]>

作用:可以获取到一个参数对应的多个值

获取hobby参数: ${paramValues.hobby[1] }

header

类型:Map< String,String>

作用:可以获取到用户发送的请求头信息

${header[‘User-Agent’] }

headerValues

类型:Map< String,String[]>

作用:可以获取到一个头对应的多个值,返回值是一个数组类型。

initParam

类型:Map< String,String>

作用:获取到整个WEB应用的初始化参数

cookie

类型:Map< String,Cookie>

作用:获取到浏览器的Cookie信息,map的key是Cookie的name,而value是Cookie值本身,所以获取cookie指定属性(phone)的属性值,${cookie.phone.value}

[4] 运算

在EL中可以直接使用常用的运行符进行运算+ - * /

empty运算符

  • 可以用来判断一个域中对象是否为空

  • empty运算符检查一个null的对象时,会返回true

检查一个空串时,也会返回true

检查一个空的集合时,也会返回true

  • empty运算符我们常用集合是否为一个空集合,或者一个字符串是否为一个空串

  • 使用方式:

${empty 属性名}

BeanUtils可以用来将属性封装到javaBean

我们可以使用BeanUtils来替我们封装属性

由于BeanUtils属于第三方的jar包,而且BeanUtils依赖logging包,所以使用BeanUtils时需要导入两个jar包

commons-beanutils-1.8.0.jar

commons-logging-1.1.1.jar

setProperty需要传递三个参数

作用:可以根据属性名向一个对象中设置一个属性值

  • Object bean 要为设置属性值的对象

  • String name 要设置的属性名

  • Object value 要设置的属性的值

Student stu = new Student();

BeanUtils.setProperty(stu, “name”, “猪八戒”);

BeanUtils.setProperty(stu, “address”, “高老庄”);

BeanUtils.setProperty(stu, “age”, “abc”);

Map< String, String> map = new HashMap< String, String>();

//向map中添加属性

map.put(“name”, “唐僧”);

map.put(“address”, “女儿国”);

map.put(“age”, “16”);

BeanUtils.populate(stu, map);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值