组团学

EL表达式

阅读 (737547)

1、EL概述

1.1、EL的作用

JSP2.0要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。

JSP2.0 – 纯标签页面,即:不包含<% … %>、<%! … %>,以及<%= … %>

EL(Expression Language)是一门表达式语言,它对应<%=…%>。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

1.2、EL的格式

格式:${…}

例如:${1 + 2}

1.3、关闭EL

如果希望整个JSP忽略EL表达式,需要在page指令中指定isELIgnored=”true”。

如果希望忽略某个EL表达式,可以在EL表达式之前添加“\”,例如:${1 + 2}。

1.4、EL运算符

image20200309203714866.png

1.5、EL不显示null

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

2、EL表达式格式

先来了解一下EL表达式的格式!现在还不能演示它,因为需要学习了EL11个内置对象后才方便显示它。

l 操作List和数组:{list[0]}、{arr[0]};

l 操作bean的属性:{person.name}、{person[‘name’]},对应person.getName()方法;

l 操作Map的值:{map.key}、{map[‘key’]},对应map.get(key)。

3、EL内置对象

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

l pageScope

l requestScope

l sessionScope

l applicationScope

l param;

l paramValues;

l header;

l headerValues;

l initParam;

l cookie;

l pageContext;

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

域内置对象一共有四个:

l pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);

l requestScope:${requestScope.name}等同与request.getAttribute(“name”);

l sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);

l applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);

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

Person.java

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; } }

image20200309203847738.png

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

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

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

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

image20200309204006189.png

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

image20200309204028875.png

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

image20200309204058828.png

3.3、请求头相关内置对象

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

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

image20200309204144358.png

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

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

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

image20200309204419508.png

3.5、Cookie相关内置对象

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

image20200309204524537.png

3.6、pageContext对象

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

image20200309204555606.png

需要 登录 才可以提问哦