EL(JSP中的表达式语言)

一.EL概述

1、EL的作用
JSP2.0开始,要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。
JSP2.0 – 纯标签页面,即:不包含<% … %>、<%! … %>,以及<%= … %>

EL(Expression Language)是一门表达式语言,它对应<%=…%>。

2、EL的格式

格式:${…}

例如:${1 + 2}

3、关闭EL
如果希望整个JSP忽略EL表达式,需要在page指令中指定isELIgnored=”true”。
如果希望忽略某个EL表达式,可以在EL表达式之前添加“\”,例如:\${1 + 2}

4、EL运算符

这里写图片描述

5、EL不显示null
当EL表达式的值为null时,会在页面上显示空白,即什么都不显示。

二.EL表达式基本应用

EL表达式格式:

1.操作List和数组:

${list[0]}${arr[0]}

2.操作bean的属性(也叫作javaBean导航):

${person.name}${person[‘name’]},对应person.getName()方法;

3.操作Map的值:

${map.key}、${map[‘key’]},对应map.get(key)。

3、EL内置对象

EL一共11个内置对象,无需创建即可以使用。这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。

  • pageScope
  • requestScope
  • sessionScope
  • applicationScope
  • param
  • paramValues
  • header
  • headerValues
  • initParam
  • cookie
  • pageContext

3.1、域相关内置对象(重点)

域内置对象一共有四个:

pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);
requestScope:${requestScope.name}等同与request.getAttribute(“name”);
sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);
applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);

如果在域中保存的是JavaBean对象,那么可以使用EL来访问JavaBean属性。因为EL只做读取操作,所以JavaBean一定要提供get方法,而set方法没有要求。

提供一个Person类:

public class Person {
    private String name;
    private int age;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

这里写图片描述

全域查找:${person}表示依次在pageScope、requesScopet、sessionScope、appliationScope四个域中查找名字为person的属性。

3.2、请求参数相关内置对象

param和paramValues这两个内置对象是用来获取请求参数的。

  • param:Map<String,String>类型,param对象可以用来获取参数,与request.getParameter(属性名)方法相同。

这里写图片描述

注意:在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。这一点与使用request.getParameter()方法是不同的。

这里写图片描述

paramValues:paramValues是Map<String, String[]>类型,当一个参数名,对应多个参数值时可以使用它。

这里写图片描述

3.3、请求头相关内置对象

header和headerValues是与请求头相关的内置对象:

header: Map<String,String>类型,用来获取请求头。

这里写图片描述

headerValues:headerValues是Map<String,String[]>类型。当一个请求头名称,对应多个值时,使用该对象,这里就不在赘述。

3.4、应用初始化参数相关内置对象

initParam:initParam是Map<String,String>类型。它对应web.xml文件中的<context-param>参数。

这里写图片描述

3.5、Cookie相关内置对象

cookie:cookie是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。

这里写图片描述

3.6、pageContext对象

pageContext:pageContext是PageContext类型!可以使用pageContext对象调用getXXX()方法,例如pageContext.getRequest(),可以${pageContext.request}。也就是读取JavaBean属性!!!

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值