什么是EL表达式?
EL是Expression Language的缩写,是一种在JSP页面获取数据的简单方式,只能获取数据不能设置数据。
为什么需要EL表达式?
在JSP开发中为了获取Servlet域对象中存储的数据,需要书写很多的Java代码,这样会使JSP页面看起来十分的混乱,难以维护。
为此,在JSP2.0规范中提供了EL表达式。
EL表达式的语法?
EL 表达式语法以${开头,以}结束,中间为合法的表达式。
EL 表达式语法如下:
${EL表达式}1复制代码类型:[java]
例如以下Java表达式和El表达式的作用相同:
Java表达式:
<%=request.getParameter(“username”)%>
EL表达式:
${param.username}
比较以上两种表达式的形式,都用于输出请求参数username,可以看出,EL表达式使得JSP文件的穿件人员能用更加简单的语法来访问数据。
EL表达式的运算?
EL 表达式定义了许多运算符,如算术运算符、比较运算符、逻辑运算符等,使用这些运算符,可以使 JSP 页面更加简洁。
1)关系运算
2)逻辑运算
3)算术运算
4)empty运算符
EL表达式中的empty运算符用于判断某个对象是否为null或””,结果为布尔类型,其基本的语法格式如下:
${empty var}
empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。
代码示例:
<body> <% // 1、值为 null 值的时候,为空 request.setAttribute("emptyNull",null); // // 2、值为空串的时候,为空 request.setAttribute("emptyStr",""); // 3、值是 Object 类型数组,长度为零的时候 request.setAttribute("emptyObj",new Object[]{}); // 4、list 集合,元素个数为零 request.setAttribute("emptyList",new ArrayList<String>()); // 5、map 集合,元素个数为 request.setAttribute("emptyMap",new HashMap<String,Object>()); %> ${empty emptyNull}<br/> ${empty emptyStr}<br/> ${empty emptyObj}<br/> ${empty emptyList}<br/> ${empty emptyMap}<br/> </body>
5)条件表达式
EL表达式中条件运算符用于执行某种条件判断,类似于Java中的if-else语句,其语法格式如下:
${A?B:C}
表达式A的计算结果为布尔类型:
- 如果表达式A的计算结果为true,就执行表达式B,并返回B的值;
- 如果表达式A的计算结果为false,就执行表达式C,并返回C的值;
6)三元运算
语法格式如下:
表达式 1?表达式 2:表达式 3
如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值。
代码示例:
<body> <% //1、值为null值时 request.setAttribute("emptyNull", null); //2、值为空串时 request.setAttribute("emptyStr", ""); //3、值是Object类型数组,长度为零的时候 request.setAttribute("emptyArr", new Object[]{}); //4、list集合,元素个数为零 List<String> list = new ArrayList<>(); request.setAttribute("emptyList", list); //5、map集合,元素个数为零 Map<String,Object> map = new HashMap<String, Object>(); request.setAttribute("emptyMap", map); //6、其他类型数组长度为0 request.setAttribute("emptyIntArr", new int[]{}); %> ${ empty emptyNull } <br/> ${ empty emptyStr } <br/> ${ empty emptyArr } <br/> ${ empty emptyList } <br/> ${ empty emptyMap } <br/> ${ empty emptyIntArr} <br/> <%-- 三元运算 --%> ${ 12 != 12 ? "相等":"不相等" } </body>
EL表达式隐含对象
JSP有9个隐含对象,而EL也有自己的隐含对象,EL隐含对象总共有11 个,如下图所示:
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》