JavaWeb学习篇之EL表达式

来源:互联网 发布:围棋软件知乎 编辑:程序博客网 时间:2024/05/21 18:39

今天主要讲的是EL表达式,它的出现替代了JSP表达式(<%=  %>)。两者的作用基本相同,只不过EL表达式用起来会相对更加方便。

基本使用方法${表达式}  

使用EL表达式可以直接获取域中的值补充一下,主要有四大域空间(pageScope,requestScope,sessionScope,applicationScope)。在EL表达式中可以直接指定键值,就可以获取相应的关联值。

1、EL表达式获取普通值

例如:pageContext.setAttribute("score",100);  可以使用${score}获取100这个值。提起注意:1)在EL表达式中如果不指定域空间的话会全域去寻找,顺序为:pageScope--requestScope--sessionScope--applicationScope 找到最想匹配的键值,返回其关联值。当然我们也可以指定所要寻找的域空间,比如要在域空间requestScope中寻找,可以写成${requestScope.score}。

2、EL表达式获取对象

我们用EL表达式不仅可以获取域中的普通值,还可以把域中的对象获取出来。例如:User user=new User("张三"); pageContext.setAttribute("user",user);  可以使用${user}获取这个对象。不仅如此,我们还可以在EL表达式中获取相关方法。如:在User类中属性name,有方法getName(),这是我们可以这样来调用这个方法${user.name},它会在user对象中调用getName()方法。(注意,对象.xx会自动寻找匹配getXx()方法,get后首字母大写)。虽然有的书籍上说EL表达式中获得对象不可以直接调用方法,但经过小编测试发现其实可以调用方法的如${user.getName()},这个可以正常使用

有时如:pageContext.setAttribute("score-team",100);

这时再用${score-team}会显示无法获取(因为多了一个-的缘故)。其实还有另外一中使用方法${pageScope['score-team']},这样就可以解决问题

3、El中常用的一些隐藏对象(只是一些常用的,并不是所有的)

- pageContext

类型 PageContext

它和JSP中pageContext是一个东西

作用 可以获取到JSP中其他的隐含对象

例如:可以获取项目名:

${pageContext.request.contextPath }

- pageScope

类型:Map<String,Object>

代表:page域中的属性

作用:可以获取到page域中的属性

- requestScope

类型:Map<String,Object>

代表:request域中的属性

作用:可以获取到request域中的属性

- sessionScope

类型:Map<String,Object>

代表:session域中的属性

作用:可以获取到session域中的属性

- applicatScope

类型:Map<String,Object>

代表:application域中的属性

作用:可以获取到application域中的属性

- param

类型: Map<String , String>

代表:用户发送的请求参数

作用:可以获取请求参数

用法: ${param.参数名}

注意:一般为接受页面链接或者表单发过来的参数

- paramValues

类型:Map<String , String[]>

代表:一个请求参数对应的多个值

用法: ${paramValues.参数名[索引]}

注意:和param用法类似,更多用在复选框参数的接收,返回      值是一个字符串数组

4、EL表达式中还可以进行运算

运算符

说明

范例

结果

+

${17+5}

22

-

${17-5}

12

*

${17*5}

85

/div

${17/5}${17 div 5}

3

%mod

取余

${17%5}${17 mod 5}

2

==eq

等于

${5==5}${5 eq 5}

true

!=ne

不等于

${5!=5}${5 ne 5}

false

<lt

小于

${3<5}${3 lt 5}

true

>gt

大于

${3>5}${3 gt 5}

false

<=le

小于等于

${3<=5}${3 le 5}

true

>=ge

大于等于

${3>=5}${3 ge 5}

false

&&and

并且

${true&&false}${true and false}

false

!not

${!true}${not true}

false

||or

或者

${true||false}${true or false}

true

empty

是否为空

${empty “”},可以判断字符串、数据、集合的长度是否为0,为0返回trueempty还可以与not!一起使用。${not empty “”}

true

 

原创粉丝点击