JavaWeb后端入门8—EL表达式

EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript 和XPath表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。1. 概述EL和JSTL来取代J

JavaWeb后端入门8—EL表达式

EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript 和XPath表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。

1. 概述

EL和JSTL来取代JSP页面中嵌入Java代码的写法。

1.1 EL功能

  1. 获取数据
  2. 执行运算
  3. 获取web开发常用对象
  4. 调用Java方法(一般不用)

1.2 EL语法

代码语言:javascript代码运行次数:0运行复制
${EL表达式}

2. EL获取数据功能演示

2.1 获取单个数据

调用pageContext.findAttribute()方法,别从page、request、session、application范围查找相应对象,找到就会返回相应对象,找不到返回””(不是null,是空的字符串)。EL所获取的数据需要在四个作用范围中。

  • 代码演示
代码语言:javascript代码运行次数:0运行复制
	<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

获取全局初始化参数的值

代码语言:javascript代码运行次数:0运行复制
	<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对象后端入门

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747999047a4717127.html

相关推荐

  • JavaWeb后端入门8—EL表达式

    EL(Expression Language)目的:为了使JSP写起来更加简单。表达式语言的灵感来自于ECMAScript 和XPath表达式语言,它提供了在JSP中简化表达式的方法,让Jsp的代码更加简化。1. 概述EL和JSTL来取代J

    6小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信