java el 表达式_Javaweb之EL表达式

1.EL表达式简介

EL全名为Expression Language。EL的主要作用为:

获取数据:EL表达式主要用于替换jsp页面中的脚本表达式,以从各种类型的web域中检索java对象,获取数据。(某个web域中的对象,访问JavaBean的属性,访问list集合,访问map集合,访问数组)

执行运算:利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}

获取web开发常用对象:EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

调用java方法:EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

1.1 获取数据

使用EL表达式获取数据的语法:"${标识符}"

EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回""(空字符串)。若没有指定哪个属性范围,它的默认值会从page范围找,假如找不到,再依序到request,session,application范围找。假如全部的范围都找不到时,就返回null值了。如下:${ }中没有sessionScope属性范围,依旧可以读到存储的数据。

Customer customer=new Customer();

customer.setName("koala");

customer.setAge(12);

session.setAttribute("customer",customer);

%>

name: ${customer.name}

age: ${customer.age}

EL表达式可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据。

获取request域中的对象:

name: ${name}

33fca3905358004e8a6ea93d1f3bcad6.png

获取JavaBean的属性:

Customer customer=new Customer();

customer.setAge(21);

request.setAttribute("customer",customer);

%>

customer's age: ${customer.age}

e4a17b9130abbbab6aa8bb58a06118a2.png

获取list集合中指定位置的元素:

Customer customer1=new Customer();

customer1.setAge(21);

Customer customer2=new Customer();

customer2.setAge(23);

List list=new ArrayList();

list.add(customer1);

list.add(customer2);

request.setAttribute("list", list);

%>

customer2's age:${list[1].age}

99ab693475f5ecd2904e1ebdf5cef852.png

1.2 执行运算

语法:${运算表达式},EL表达式支持如下运算符:

1.2.1 关系运算符

4e3620bf2e7bf5d2507f0721a88358a0.png

1.2.2 逻辑运算符

3f8fc145f1d8f94c80c6dd0c1af4d61f.png

1.2.3 empty运算符

检查对象是否为null(空)

1.2.4 二元表达式

${username==null?"":user.name}

1.2.5 []和.号运算符

EL提供.和[]两种运算符来存取数据,两者所代表的意思是一样的。

如下,当域对象的属性名中有特殊字符“.”时使用[]会很方便:

Customer customer=new Customer();

customer.setName("koala");

session.setAttribute("com.d.dsa",customer);

%>

name: ${sessionScope["com.d.dsa"].name}

2.EL的隐含对象

EL中一共有11个隐含对象,可以将它分成三类:

与范围有关的隐含对象:pageScope, requestScope, sessionScope, applicationScope

与输入有关的隐含对象,获取请求参数的:param(一个), paramValues(一组)

其它请求对象:cookie, header, headerValues, initParam, pageContext

2.1 与范围有关的隐含对象

time:${applicationScope.time}

application.setAttribute("time",new Date());

%>

2.2 与输入有关的隐含对象

el.jsp中:

To EL2 page

el2.jsp中:

score:${param.score}

names:${paramValues.name[0]} and ${paramValues.name[1]}

运行el.jsp:

323e9987ae03863683306b046e589e43.png

点击超链接:

3d3db5f778bf43628d63fc8f7aca5e2c.png

注:

names:${paramValues.name[0].class.name}

相当于

也就是只要返回值有get...方法,就可以使用EL方法调用。

2.3 其它请求对象

cookie:假如我们在cookie中设定一个名称为userCountry的值,那么可以使用${cookie.userCountry}来取得它。

header和headerValues:header存储用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如,用户浏览器的版本,用户计算机所设定的区域等其他相关数据。若同一标头名称拥有不同的值,改用headerValues。

initParam:获得当前web应用的初始化参数:在web.xml中进行配置,

initName

koala

在jsp文件中使用initParam:${initParam.initName}即可获得当前web应用的初始化参数koala。

pageContext:pageContext即为PageContext类型,但只能读取属性。

contextPath:${pageContext.request.contextPath}

sessionId:${pageContext.session.id}

sessionAttributeNames:${pageContext.session.attributeNames}

3.EL的关系运算符

比较重要的是三目运算符:${param.score > 60 ? "及格" : "不及格"}

4.empty运算符

empty可以作用于一个集合,若集合不存在或集合中没有元素,其结果都为true。

List names=new ArrayList();

names.add("abc");

request.setAttribute("names",names);

%>

names is empty:${empty requestScope.names}

运行jsp文件,

b62e7952b331029f1141e2ce1a4b9740.png

搜索微信公众号“程序员考拉”欢迎关注!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值