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>参数。 |





最近浏览
