-
jsp中${ } 是EL表达式
目的是为了输出${ } 中指定的属性(参数、对象等)的值,相当于out.print该属性值到客户端浏览器的响应中。
也可以省略目标范围,如:
${user[name]} 等价于 ${user.name}
意思是下面三条语句:
User user = (User)request.getAttribute(user);
String name = user.getName();
out.println(name);
不加范围关键字时,相当于从当前jsp页面page的范围起,依次往更大范围的域搜寻 user 对象,然后获取该对象的name 属性值
其搜寻的范围依次是:page、request、session、application
如果未搜索到,即会返回值null
——————————————————————————————————
-
EL表达式的运算
1 、EL表达式的关系运算(比较运算)
注意:
1)使用lt gt le ge 是在XML中去使用,因为XML中不能出现>和<
2)注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2} 或者 ${ ${param.password1 } = = ${ param.password2 } }
而应写成 ${ param.password1 = = param.password2 }
2、逻辑运算:
3、Empty运算符
Empty运算符主要用来判断值是否为空(包括:NULL,空字符串,空集合)
运算的结果值:只能是true和false
如果是空就是true
举例:
test.jsp代码:
<%@page pageEncoding="utf-8" %>
name值为: ${param.name }
empty处理结果: ${empty param.name}
==null处理结果: ${param.name == null }
第一种情况:地址栏输入:http://127.0.0.1:8080/test.jsp
显示:
name值为:
empty处理结果:true
==null处理结果:true
第二种情况:地址栏输入:http://127.0.0.1:8080/test.jsp?name=
显示:
name值为:
empty处理结果:true
==null处理结果:false
分析:第一种情况的name=null,第二种情况的name=“ ”
empty表达式对于name=null和name=”“的识别是一样的,都返回true;
==null表达式对于name=null判断为true,而对于name=”“判断则是false;
如果非要使用==null表达式判断是否为空,需要将表达式写成如下:
${param.name == null && param.name!=""}
4、三目运算
${ A ? B : C}