EL表达式简介:
全称Expression Language
EL表达式是JSP2.0(JavaEE 1.4)规范中的一门技术。在JavaEE1.4之下使用EL表达式,需要设置page属性
<%@ page isELIgnored="false" %> |
作用:最基本的替换掉JSP页面中的脚本表达式( <%=> )
- 获取数据
语法:${标识符} 例如${2 + 1}
注意:EL表达式只能用来获取域中的属性,不能用来设置属性;只能获取指定的数据,不能进行迭代
- 获取域中的属性
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” ,不是null
实例:
<body> <% pageContext.setAttribute("name", "zhang"); %> ${name } <!--页面中显示zhang--> ${nameX} <!--页面中显示空白,但又空字符--> </body> |
- 获取数组中的属性
示例:
<body> <% int[] arr = {22,45,34}; pageContext.setAttribute("arr", arr); %> ${arr[0] } <!--页面中显示22--> ${arr[4] } <!--页面显示空白,即空字符,不会报错--> </body> |
- 获取集合中的属性
示例一:从list集合获取
<body> <% List list = new ArrayList(); list.add("haha"); list.add("hehe"); list.add("haha"); pageContext.setAttribute("list", list); %> ${list[2]} <!--页面显示haha--> </body>
|
示例二:从map集合获取
<body> <% Map<String, String> map = new HashMap<String, String>(); map.put("a1001", "张三"); map.put("a1002", "李四"); map.put("a10-03", "王五"); pageContext.setAttribute("map", map); %> ${map["a1001"] } <!--显示张三--> ${map.a1002 } <!--显示李四--> ${map["a10-03"]} <!--显示王五--> ${map.a10-03} <!--会出错,抛异常--> </body>
|
.和[]的区别:除了中括号中是数字或者特殊字符的情况,都可以用.替代
- 获取JavaBean中的属性,直接用.属性名,不能用.getXxx,并且JavaBean中必须同时有get、set方法,否则无法取值
<body> <% Person p = new Person(); p.setName("zhangsan"); pageContext.setAttribute("p", p); %> ${p.name } <!--显示zhangsan--> </body>
- 获取路径
<a href="${pageContext.request.contextPath }/el/elTest.jsp" >超链接</a> |
- 执行运算
运算符 |
说明 |
范例 |
结果 |
+ |
加 |
${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返回true。empty还可以与not或!一起使用。${empty “”} ${empty null} |
true |
三元表达式 |
|
${empty map ? "haha" : "hehe" } |
hehe |
- 获取常用的web开发对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用
隐含对象名称 |
描 述 |
pageContext |
对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。) |
pageScope |
代表page域中用于保存属性的Map对象 |
requestScope |
代表request域中用于保存属性的Map对象 |
sessionScope |
代表session域中用于保存属性的Map对象 |
applicationScope |
代表application域中用于保存属性的Map对象 |
<body> <a href="${pageContext.request.contextPath }/el/elTest.jsp" >超链接</a> <% pageContext.setAttribute("name", "itheima"); request.setAttribute("name", "itcast"); session.setAttribute("name", "csdn"); %> ${requestScope.name } <!--显示itcast--> ${sessionScope.name } <!--显示csdn--> </body>
隐含对象名称 |
描 述 |
param |
表示一个保存了所有请求参数的Map对象 |
地址栏输出: http://localhost/jsp/index.jsp?username=zhangsan&psw=123 <body> ${param.username } 页面显示zhangsan ${param.password } 页面显示123 </body> |
|
paramValues |
paramValues是Map<String, String[]>类型,当一个参数名,对应多个参数值时可以使用它。 |
header |
表示一个保存了所有http请求头字段的Map对象 |
${header.Host } 页面显示localhost |
|
headerValues |
同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”] |
cookie |
cookie是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。 |
${cookie.JSESSIONID.value } |
|
initParam |
Map<String,String>类型。它对应web.xml文件中的<context-param>参数。 |