JavaWeb——JSP 的 EL
- EL,即 Expression Language,是 JSP2.0 中引入的新内容,用于简化在 JSP 开发中对象的引用,从而规范代码。
一、EL 基础
- EL 的功能之一就是便于将 Java 代码片段嵌入到 JSP 页面中。
1、EL 语法
- EL 语法以 “${” 开头,以 “}” 结束,中间为表达式,格式如下:
${expression} 注意,如果 JSP 页面中有 “${ ” 要输出,为了避免冲突,应当在前面加上转义字符 “\” 或者用 “${'${'}"
2、EL 优点
- EL 具有语法简单、使用方便。
- EL 可以与 JSTL 和 JavaScript 配合使用。
- EL 和大多数编程语言一样。
3、禁用 EL
- 在较低版本的浏览器中,并不支持 EL,此时就需要进行禁用操作了,禁用方式有如下几种:
- 1、用反斜杠禁用少量的 EL 语句,如
\${expression}
- 对于页面中 EL 语句较多的可以通过 page 指令禁用 EL
- 使用 page 指令禁用 EL 表达式的格式如下:
<%@page isELIgnored="布尔值"%>
- 而对于需要在多个页面禁用 EL 表达式,则需要在 web.xml 中进行配置了,
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-parttern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config>
二、EL 关键字和运算符及其优先级
1、关键字
- 和大多数编程语言一样,EL 表达式也是有关键字的,其关键字如下表
and eq gt instanceof div or le false empty not lt ge
2、运算符及其优先级
- EL 可以访问数据运算符、算术运算符、关系运算符、逻辑运算符、条件运算符和 empty 运算符,运算符的优先级如下:
- 同级运算符从左向右结合。
2、EL 使用数据
- EL 通过“[]”和“.”运算符可以对 Bean 的属性等数据进行访问;通常除了所访问的对象的属性名包含“- .”等特殊符号和数组只能用“[]”访问,其余情况这两者的功能是等价的。
2.1、获取数组
- 示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式测试</title> <style type="text/css"> body{ background: #d7c7e9; align-items: center; text-align: center; } </style> </head> <body> <h2>1、数组元素获取</h2> <% String[] arr = {"秦国","楚国","韩国","齐国"}; request.setAttribute("book", arr); %> <% String[] arr1 = (String[])request.getAttribute("book"); for(int i=0;i<arr1.length;i++){ request.setAttribute("requestl", i); %> ${requestl}:${book[requestl]}<br> <%}%> </body> </html>
- 效果:
2.2、获取集合
- 示例
<h2>2、List 元素获取</h2> <% List<String> list = new ArrayList<>(); list.add("广东省"); list.add("湖南省"); list.add("云南省"); list.add("北京市"); list.add("山东省"); list.add("山西省"); session.setAttribute("province", list); %> <% List<String> list1 = (List<String>)session.getAttribute("province"); for(int i=0;i<list1.size();i++){ request.setAttribute("requestl", i); %> ${requestl}:${province[requestl]}<br> <%}%>
- 效果:
3、EL 算术运算
- 同 Java 语言一样, EL 表达式可以进行加减乘除等算术运算:
运算符 功能 例子 结果 + 加 ${19+1} 20 - 减 ${66-30} 36 * 乘 ${52.1*10} 521 /或div 除 ${5/2} 2.5 %或mod 求余 ${17%3} 2
4、EL 的 empty 运算符
- EL 提供 empty 运算符判断对象是否为空,示例:
<h2>3、empty 运算符</h2> <%request.setAttribute("user","");%> <% request.setAttribute("user1", null); %> <h3> ${empty user}<br> ${empty user1} </h3>
- 效果:
5、EL 的 关系逻辑运算
- 示例如下:
<h2>4、关系逻辑运算</h2> <% request.setAttribute("userName","御承扬"); request.setAttribute("power", "test"); %> userName=${userName}<br> power=${power}<br> \${userName!=""and(userName="ycy")}: ${userName!=""and(userName=="ycy")}<br> \${userName=="御承扬"and(power=="test")} ${userName=="御承扬"and(power=="test")}
- 效果如下:
6、EL 的条件运算符
- EL 中也有和 C 语言类似的“?”条件运算,示例如下:
<h2>5、条件运算</h2> <% request.setAttribute("str", "天若有情天亦老,人间正道是沧桑。"); %> \${empty str? "str is null":str}: ${empty str?"str is null":str}
- 效果