admin管理员组文章数量:1033098
JavaWeb后端入门8—EL表达式
EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript 和XPath表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。
1. 概述
EL和JSTL来取代JSP页面中嵌入Java代码的写法。
1.1 EL功能
- 获取数据
- 执行运算
- 获取web开发常用对象
- 调用Java方法(一般不用)
1.2 EL语法
代码语言:javascript代码运行次数:0运行复制${EL表达式}
2. EL获取数据功能演示
2.1 获取单个数据
调用pageContext.findAttribute()
方法,别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回””(不是null,是空的字符串)。EL所获取的数据需要在四个作用范围中。
- 代码演示
<h1>EL获取数据</h1>
<%
//page范围(PageContext)
//pageContext.setAttribute("name", "张三");
//request范围
request.setAttribute("name", "李四");
//Session范围
session.setAttribute("name", "王五");
//application范围
application.setAttribute("name", "冰冰");
%>
<%=pageContext.getAttribute("name") %>-${ pageScope.name } <br>
<%=request.getAttribute("name") %>-${ requestScope.name }<br>
<%=session.getAttribute("name") %>-${ sessionScope.name }<br>
<%=application.getAttribute("name") %>-${ applicationScope.name }<br>
简写
${name}
2.2 获取数据和集合中的数据
代码语言:javascript代码运行次数:0运行复制<body>
<h1>EL获取数据</h1>
<h2>获取数组的数据</h2>
<%
String[] arrs = {"aa","bb","cc"};
pageContext.setAttribute("arrs", arrs);
%>
${ arrs[0] }
${ arrs[1] }
${ arrs[2] }
<h2>获取集合中的数据</h2>
<%
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.add("33");
pageContext.setAttribute("list", list);
%>
${ list[0] }
${ list[1] }
${ list[2] }
<h2>获取MAP中的数据</h2>
<%
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("aaa",111);
map.put("bbb", 222);
map.put("ccc.ddd",333);
pageContext.setAttribute("map", map);
%>
${ map.aaa }
${ map.bbb }
${ map["ccc.ddd"] }
</body>
当Map数组的key中包含了特殊字符,不能使用.
必须使用[ ]
.
用来获取对象属性[]
用来获取下标
3. EL执行运算
3.1 算术运算
代码语言:javascript代码运行次数:0运行复制<%
pageContext.setAttribute("n1", 10);
pageContext.setAttribute("n2", 20);
%>
${n1+n2}
代码语言:javascript代码运行次数:0运行复制30
3.2 关系运算
代码语言:javascript代码运行次数:0运行复制<%-- lt的意思是less than 也就是< --%>
${n1<n2 } -- ${n1 lt n2 } <br>
<%-- gt的意思是greater than 也就是> --%>
${n1>n2 } -- ${n1 gt n2 } <br>
<%-- eq的意思是equal 也就是= --%>
${n1 == n2 } -- ${n1 eq n2 }<br>
<%-- le的意思是less equal 也就是<= --%>
${n1 <= n2 } -- ${n1 le n2 } <br>
<%-- ge的意思是greater equal 也就是>= --%>
${n1 >= n2 } -- ${n1 ge n2 } <br>
<%-- ne的意思是not equal 也就是>= --%>
${n1 != n2 } -- ${n1 ne n2 } <br>
代码语言:javascript代码运行次数:0运行复制true -- true
false -- false
false -- false
true -- true
false -- false
true -- true
3.3 逻辑运算
代码语言:javascript代码运行次数:0运行复制<%
pageContext.setAttribute("n3", 30);
pageContext.setAttribute("n4", 40);
%>
${(n1<n2)&&(n3<n4) } -- ${(n1<n2)and(n3<n4) } <br>
${(n1<n2)||(n3<n4) } -- ${(n1<n2)or(n3<n4) } <br>
${!(n1<n2) } -- ${not(n1<n2) } <br>
代码语言:javascript代码运行次数:0运行复制true -- true
true -- true
false -- false
3.4 三元运算
代码语言:javascript代码运行次数:0运行复制${n1<n2 ? "n1小于n2":"n1大于等于n2" }
代码语言:javascript代码运行次数:0运行复制n1小于n2
三元表达式也是可以输出HTML标签的
代码语言:javascript代码运行次数:0运行复制<h1>EL三元表达式输出HTML标签</h1>
<%
pageContext.setAttribute("n1", 30);
pageContext.setAttribute("n2", 40);
%>
${n1<n2 ? "<h1>n1小</h1>" : "<h1>n2小</h1>" }
代码语言:javascript代码运行次数:0运行复制n1小
3.5 empty运算
代码语言:javascript代码运行次数:0运行复制${empty user }
${not empty user }
代码语言:javascript代码运行次数:0运行复制true false
4. EL获取web开发常用对象
4.1 常用对象(11个)
pageContext | 相当于JSP内置对象中pageContext |
---|---|
pageScope | 获取指定域下的名称的数据 |
requestScope | 获取指定域下的名称的数据 |
sessionScope | 获取指定域下的名称的数据 |
applicationScope | 获取指定域下的名称的数据 |
param | 在页面中接收请求参数(接收一个名称对应一个值参数)。 |
paramValues | 在页面中接收请求参数(接收一个名称对应多个值参数)。 |
header | 在页面上获取请求头(获取一个key对应一个value 头) |
headerValues | 在页面上获取请求头(获取一个key对应多个value 头) |
cookie | 访问cookie的名称和值(${cookie.key.name} ${cookie.key.value}) |
initParam | 获取全局初始化参数的值 |
<h1>EL获取开发常用的对象</h1>
${param.name }
${paramValues.hobby[0] }
${paramValues.hobby[1] }
${header["user-agent"] }
${cookie }
${initParam.username }
//initParam可以在web.xml里面配置全局变量
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
${pageContext.request.contextPath }<br>//获取项目路径
${pageContext.request.remoteAddr }<br>//获取IP地址
${header["x-forwarded-for"] }<br>//获取IP地址
${pageContext.response.characterEncoding }//通过pageContext获取response对象中的characterEncoding
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-04-22 ,如有侵权请联系 cloudcommunity@tencent 删除数据el对象后端入门JavaWeb后端入门8—EL表达式
EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript 和XPath表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。
1. 概述
EL和JSTL来取代JSP页面中嵌入Java代码的写法。
1.1 EL功能
- 获取数据
- 执行运算
- 获取web开发常用对象
- 调用Java方法(一般不用)
1.2 EL语法
代码语言:javascript代码运行次数:0运行复制${EL表达式}
2. EL获取数据功能演示
2.1 获取单个数据
调用pageContext.findAttribute()
方法,别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回””(不是null,是空的字符串)。EL所获取的数据需要在四个作用范围中。
- 代码演示
<h1>EL获取数据</h1>
<%
//page范围(PageContext)
//pageContext.setAttribute("name", "张三");
//request范围
request.setAttribute("name", "李四");
//Session范围
session.setAttribute("name", "王五");
//application范围
application.setAttribute("name", "冰冰");
%>
<%=pageContext.getAttribute("name") %>-${ pageScope.name } <br>
<%=request.getAttribute("name") %>-${ requestScope.name }<br>
<%=session.getAttribute("name") %>-${ sessionScope.name }<br>
<%=application.getAttribute("name") %>-${ applicationScope.name }<br>
简写
${name}
2.2 获取数据和集合中的数据
代码语言:javascript代码运行次数:0运行复制<body>
<h1>EL获取数据</h1>
<h2>获取数组的数据</h2>
<%
String[] arrs = {"aa","bb","cc"};
pageContext.setAttribute("arrs", arrs);
%>
${ arrs[0] }
${ arrs[1] }
${ arrs[2] }
<h2>获取集合中的数据</h2>
<%
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.add("33");
pageContext.setAttribute("list", list);
%>
${ list[0] }
${ list[1] }
${ list[2] }
<h2>获取MAP中的数据</h2>
<%
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("aaa",111);
map.put("bbb", 222);
map.put("ccc.ddd",333);
pageContext.setAttribute("map", map);
%>
${ map.aaa }
${ map.bbb }
${ map["ccc.ddd"] }
</body>
当Map数组的key中包含了特殊字符,不能使用.
必须使用[ ]
.
用来获取对象属性[]
用来获取下标
3. EL执行运算
3.1 算术运算
代码语言:javascript代码运行次数:0运行复制<%
pageContext.setAttribute("n1", 10);
pageContext.setAttribute("n2", 20);
%>
${n1+n2}
代码语言:javascript代码运行次数:0运行复制30
3.2 关系运算
代码语言:javascript代码运行次数:0运行复制<%-- lt的意思是less than 也就是< --%>
${n1<n2 } -- ${n1 lt n2 } <br>
<%-- gt的意思是greater than 也就是> --%>
${n1>n2 } -- ${n1 gt n2 } <br>
<%-- eq的意思是equal 也就是= --%>
${n1 == n2 } -- ${n1 eq n2 }<br>
<%-- le的意思是less equal 也就是<= --%>
${n1 <= n2 } -- ${n1 le n2 } <br>
<%-- ge的意思是greater equal 也就是>= --%>
${n1 >= n2 } -- ${n1 ge n2 } <br>
<%-- ne的意思是not equal 也就是>= --%>
${n1 != n2 } -- ${n1 ne n2 } <br>
代码语言:javascript代码运行次数:0运行复制true -- true
false -- false
false -- false
true -- true
false -- false
true -- true
3.3 逻辑运算
代码语言:javascript代码运行次数:0运行复制<%
pageContext.setAttribute("n3", 30);
pageContext.setAttribute("n4", 40);
%>
${(n1<n2)&&(n3<n4) } -- ${(n1<n2)and(n3<n4) } <br>
${(n1<n2)||(n3<n4) } -- ${(n1<n2)or(n3<n4) } <br>
${!(n1<n2) } -- ${not(n1<n2) } <br>
代码语言:javascript代码运行次数:0运行复制true -- true
true -- true
false -- false
3.4 三元运算
代码语言:javascript代码运行次数:0运行复制${n1<n2 ? "n1小于n2":"n1大于等于n2" }
代码语言:javascript代码运行次数:0运行复制n1小于n2
三元表达式也是可以输出HTML标签的
代码语言:javascript代码运行次数:0运行复制<h1>EL三元表达式输出HTML标签</h1>
<%
pageContext.setAttribute("n1", 30);
pageContext.setAttribute("n2", 40);
%>
${n1<n2 ? "<h1>n1小</h1>" : "<h1>n2小</h1>" }
代码语言:javascript代码运行次数:0运行复制n1小
3.5 empty运算
代码语言:javascript代码运行次数:0运行复制${empty user }
${not empty user }
代码语言:javascript代码运行次数:0运行复制true false
4. EL获取web开发常用对象
4.1 常用对象(11个)
pageContext | 相当于JSP内置对象中pageContext |
---|---|
pageScope | 获取指定域下的名称的数据 |
requestScope | 获取指定域下的名称的数据 |
sessionScope | 获取指定域下的名称的数据 |
applicationScope | 获取指定域下的名称的数据 |
param | 在页面中接收请求参数(接收一个名称对应一个值参数)。 |
paramValues | 在页面中接收请求参数(接收一个名称对应多个值参数)。 |
header | 在页面上获取请求头(获取一个key对应一个value 头) |
headerValues | 在页面上获取请求头(获取一个key对应多个value 头) |
cookie | 访问cookie的名称和值(${cookie.key.name} ${cookie.key.value}) |
initParam | 获取全局初始化参数的值 |
<h1>EL获取开发常用的对象</h1>
${param.name }
${paramValues.hobby[0] }
${paramValues.hobby[1] }
${header["user-agent"] }
${cookie }
${initParam.username }
//initParam可以在web.xml里面配置全局变量
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
${pageContext.request.contextPath }<br>//获取项目路径
${pageContext.request.remoteAddr }<br>//获取IP地址
${header["x-forwarded-for"] }<br>//获取IP地址
${pageContext.response.characterEncoding }//通过pageContext获取response对象中的characterEncoding
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-04-22 ,如有侵权请联系 cloudcommunity@tencent 删除数据el对象后端入门本文标签: JavaWeb后端入门8EL表达式
版权声明:本文标题:JavaWeb后端入门8—EL表达式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747999074a2239685.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论