2.2JSP学习——表达式语言

EL是一种简单的语言,可以方便地访问和处理应用程序数据,而无需使用JSP脚本元素或JSP表达式。

其最大的优势是方便地访问JSP的隐含对象和javabean组件,使JSP页面从HTML代码中嵌入java代码的混乱结构得以改善,提高了程序的可读性和易维护性。

特点:

可以访问JSP的内置对象

简化了对javabean、集合的访问方式

可以对数据进行自动类型转换

可以通过各种运算符进行运算

可以使用自定义函数实现跟家复杂的业务功能


EL在容器中默认配置处于启动状态,每个JSP页面也可以通过page指令进行配置

<%@page isELIgnored = "true|false"%>

如果设置成true的话,则EL表达式会被当字符串直接输出。

扫描二维码关注公众号,回复: 1625747 查看本文章

EL中的常量:

布尔常量,用于区分事物的正反面,用true,false表示

整型常量,与java中定义的相同

浮点数常量,与java中定义的相同

字符串常量,是用单引号或双引号引起来的一串字符

NULl常量,用于表示应用的对象为空,用null但是在EL表达式中并不会输出null而是输出空。

EL中的变量:

EL表达式中的变量不同于jsp表达式从当前页面中定义的变量进行查找,而是由EL引擎调用PageContext.findAttribute(String)方法来从JSP四大作用域的范围中查找。例如:${username},表达式将按照page、request、session、application范围的顺序依次查找名username的属性,假如中途找到,就直接回传,不再继续找下去。假如全部的范围都没有找到,就回传null,因此在使用EL表达式访问某个变量时,应该指定查找的范围,从而避免不同作用范围中有同名属性的问题,也提高了查询效率。

EL中的.和[]操作符:

.操作符,与在java代码中一样,EL表达式也可使用点操作符来访问对象的某个属性。例如,访问javabean对象中的属性,${person.name}

[]操作符,与点操作符类似,也可以用来访问对象的属性,属性需要双括号括起来。例如,${person["name"]}

其也有其他强大的功能,

当属性中包含了特殊字符,如".","-"等非字母或数字的符号,就得使用[]

其可以访问有序集合或者数组中指定索引位置的某个元素,如${arr[0]}

其可以访问Map对象的key关键字,如${map["key"]}

其可以和.操作符结合使用,如${users[0].username}

EL的错误机制:

EL对于错误的处理方式是不提供警告,只提供默认值和错误,默认值是空字符串,错误是抛出一个异常,如

当在EL中访问一个不存在的变量,则输出空字符串,而不是null,

在EL中访问一个不存在对象的属性,会输出空字符串,而不是抛出空指针异常

在EL中访问一个不存在对象的不存在属性,则会抛出异常

EL的隐含对象:

1.与范围有关

隐含对象 说明
pageScope 用于获得页面请求作用范围中的属性值,相当于pageContext.getAttribute()
requestScope 类比上
sessionScope 类比上
applicationScope 类比上

使用的方式:

<jsp:useBean id="person1" class="com.javabean.Person" scope="session"/>
<jsp:setProperty property="name" name="person1" value="zhangsan"/>
<jsp:setProperty property="age" name="person1" value="20"/>
${sessionScope.person1.name}
${sessionScope.person1.age}

2.与请求参数有关

隐含对象 说明
param 用于获取请求参数的单个值,相当于request.getParameter()
paramValues 用于获取请求参数的一组值,相当于request.getParameterValues()

使用方式:

请求参数1:${param.a}<br/>

3.其他隐含对象

隐含对象 说明
pageContext 相当于jsp页面中的pageContext对象
header 用于获取请求头中的一个值,相当于request.getHeader(String name)
headerValues 用于获取请求头中的一组值
cookie 用于获取指定的cookie
initParam 获得上下文初始参数,相当于application.getInitParameter(String name)
EL运算符:

这里只列出有特殊名称的运算符

/或div 除以

%或mod 取余

==或eq 等于

!=或ne 不等于

<或lt 小于

>或gt 大于

<=或le 小于等于

>=或ge 大于等于

&&或and 与

||或or 或

!或not 非

empty 判空


empty在以下情况会返回true

当操作数指向的对象为null

当操作数是空字符串

当操作数是集合或者数组时,若操作数中没有任何元素

当操作数是java.util.Map中的关键字,Map对象为空,Map对象没有指定关键字,Map对象的关键字对应的值为空


EL自定义函数:

EL自定义函数就是提供一种语法在EL中调用某个java类的静态方法。

格式如下:

&{hh:fun(a1,a1,..an)}

其中,hh必须匹配包含了函数的标签库的前缀

fun为函数名,a1、a2为函数的参数

要自定义函数需要以下三个步骤:

1,编写EL自定义函数映射的java类和类中的静态方法

2,编写标签库描述文件(TLD文件),在TLD文件中描述自定义函数

3,在JSP页面中导入和使用自定义函数


猜你喜欢

转载自blog.csdn.net/smallhc/article/details/80684666