ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EL表达式

2019-04-30 12:41:23  阅读:284  来源: 互联网

标签:EL 对象 setAttribute umap 操作符 pageContext 表达式


EL(Expression Language)

一、EL操作符

语法:${EL表达式}
1.  “.”操作符 

用来访问对象的某个属性,如${user.name}。

2. “[ ]”操作符 

也可用来访问对象的某个属性,如${user[‘name’]}。

“[ ]”操作符其他功能:

(1)当属性名中包含特殊字符如“.”或“-”等的情况下,就不能使用“.”操作符来访问,这时只能使用“[ ]”操作符。

(2)根据索引值访问数组中的元素使用“[ ]”操作符,如${arr[1]}。

(3)使用变量实现动态访问,如${user[x]},x是一个变量,改变x即可。

1.1、算术操作符

这里只测试了“+”操作符,“-”、“*”、“/”或div、“%”或mod请自行测试。

<!-- “+”操作符 -->
${a1+a2+a3 }<br><!-- 输出:60 -->
${1+1 }<br><!-- 输出:2 -->
${'1'+1.1 }<br><!-- 输出:2.1 -->
${"1"+1 }<br><!-- 输出:2 -->
${bbbbbsdcksnvjnds+1 }<br><!-- 输出:1 -->
\${"bbbbbsdcksnvjnds"+1 }<!-- 报异常 -->
1.2、关系操作符

 

1.3、逻辑操作符

1.4、empty操作符

<!-- empty操作符 -->
${empty s }<br><!-- 输出:true -->
${!empty s }<br><!-- 输出:false -->
${not empty s }<br><!-- 输出:false -->
${!not empty s }<br><!-- 输出:true -->

总结:若变量 s为null,或长度为零的String,或size为零的集合,则
${ empty s }返回的结果为true,
${ not empty s }或${ ! empty s }返回的结果为false。

二、EL内置隐式对象

2.1、EL内置对象之域对象

<%
pageContext.setAttribute("a", "1");
request.setAttribute("a", "2");
session.setAttribute("a", "3");
application.setAttribute("a", "4");
%>

${pageScope.a }<!-- 输出:1 -->
${requestScope.a }<!-- 输出:2 -->
${sessionScope.a }<!-- 输出:3 -->
${applicationScope.a }<br><!-- 输出:4 -->


${a }<!-- 输出:1 -->

【总结】:${a }底层使用pageContext.findAttribute(“a”),依次从page、request、session、application的域范围中寻找”a”属性,如果都没有则返回null 。

2.2、EL内置对象之param、paramValues(请求参数对象)

<!-- 这里使用get的提交方式测试,直接在URL中拼接参数。
(请求路径:http://localhost:8080/web上下文路径/index.jsp?name=zhang&hobby=篮球&hobby=足球)
-->

${param.name }<br><!-- 输出:zhang -->
${param.hobby }<br><!-- 输出:篮球 -->
${paramValues.name }<br><!-- 输出:[Ljava.lang.String;@7c244cff -->
${paramValues.name[0] }<br><!-- 输出:zhang -->
${paramValues.hobby }<br><!-- 输出:[Ljava.lang.String;@5ae7ad90 -->
${paramValues.hobby[1] }<br><!-- 输出:足球 -->

【总结】:
${param.xxx } 相当于reuqest.getParameter(“xxx”);
${paramValues.xxx } 相当于reuqest.getParameterValues(“xxx”);
如果是数组可以使用下标。

2.3、EL内置对象之header、headerValues(请求头对象)

${header.accept }<br>
<!-- 输出:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,
image/apng,*/*;q=0.8 -->

\${header.accept-Encoding }<br>
<!-- 输出:\${header.accept-Encoding },需要注意(输出中不会输出"\",因为我不这样写,会直接报
异常),"-"被解析成减号,导致抛出异常,在语句最前面写上"\",转义$符号,就可以将语句原样输出 -->

${header['accept-Encoding'] }<br><!-- 输出:gzip, deflate, br -->
${headerValues['accept-Encoding'] }<br><!-- 输出:[Ljava.lang.String;@2f08b521 -->
${headerValues['accept-Encoding'][0] }<br><!-- 输出:gzip, deflate, br -->
2.4、EL内置对象之pageContext对象

${pageContext.request.contextPath }<br><!-- 输出:/el (这是我的web上下文路径)-->

【总结】:pageContext对象:封装了其他8个JSP内置对象,可以任意获取使用。

2.5、EL内置对象之cookie对象

<!--===================================-->
${cookie }
<!-- 输出:{JSESSIONID=javax.servlet.http.Cookie@5197416d,
Webstorm-77d15532=javax.servlet.http.Cookie@3f5b951a,
Webstorm-6c1ac651=javax.servlet.http.Cookie@536cda57} -->


2.6、EL内置对象之initParam(全局初始化参数对象)

<!-- 在web.xml中配置 :
<context-param>
<param-name>Encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
<context-param>
<param-name>pageSize</param-name>
<param-value>10</param-value>
</context-param>
-->
${initParam.Encoding }<br><!-- 输出:UTF-8 -->
${initParam }<br><!-- 输出:{pageSize=10, Encoding=UTF-8} -->


三、EL获取数据实例

3.1、EL获取域中属性

<%
String str = "hello";
pageContext.setAttribute("str", str);
%>
${pageScope.str }<br><!-- 输出:hello -->
${str }<br><!-- 输出:hello -->


3.2、EL获取数组元素

<%
String[] s = {"zhang","xiao","hu"};
pageContext.setAttribute("s", s);
%>
${pageScope.s }<br><!-- 输出:[Ljava.lang.String;@1d78464e -->
${pageScope.s[2] }<br><!-- 输出:hu -->


3.3、EL获取 List<String> 中的数据

<%
List<String> list = new ArrayList<String>();
list.add("zhang");
list.add("xiao");
list.add("hu");
pageContext.setAttribute("list", list);
%>
${list }<br><!-- 输出:[zhang, xiao, hu] -->
${list[1] }<br><!-- 输出:xiao -->


3.4、EL获取 Map<String, Integer> 中的数据

<%
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("zhang",1);
map.put("xiao",2);
map.put("hu",3);
pageContext.setAttribute("map", map);
%>
${map }<br><!-- 输出:{xiao=2, zhang=1, hu=3} -->
${map.zhang }<br><!-- 输出:1 -->


3.5、EL获取 Map<String, JavaBean> 中的数据

<%
Map<String, User> umap = new HashMap<String, User>();
umap.put("user1", new User("zhang",18));
umap.put("user2", new User("xiao",36));
pageContext.setAttribute("umap", umap);
%>
${umap }<br><!-- 输出:{user1=User [name=zhang, age=18], user2=User [name=xiao, age=36]} -->
${umap.user2 }<br><!-- 输出: User [name=xiao, age=36] -->
${umap.user1.age }<br><!-- 输出:18 -->
${umap['user2'].name }<br><!-- 输出:xiao 需注意,这种方式要求map的key必须是String类型-->
${umap['user2']['name'] }<br><!-- 输出:xiao -->
${umap['user2']['age'] }<br><!-- 输出:36 -->
${umap['user2'][age] }<br><!-- 不会报错,但什么也获取不到 -->

标签:EL,对象,setAttribute,umap,操作符,pageContext,表达式
来源: https://www.cnblogs.com/zst18980621948/p/10795331.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有