EL表达式的深刻认识

EL表达式的作用(Expression Language):

  • 获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

  • 执行运算:

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}

  • 获取web开发常用对象:

EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

  • 调用Java方法:

​​​​​​​EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

EL表达式获取数据:

*使用EL表达式获取数据语法: “${标识符}”

*EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

*EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如: ${user.address.city} ${user.list[0]}:访问有序集合某个位置的元素 ${map.key}  : 获得map集合中指定key的值

下面有实例代码demo1.jsp的重要代码:

<h3>获取域中对象的值</h3>
<% 
	pageContext.setAttribute("name", "张三");
	request.setAttribute("name", "李四");
%>
${pageScope.name }
${requestScope.name }

<h3>获取数组中的值</h3>
<%
	String [] arrs = {"小明","小红"};
	request.setAttribute("arrs", arrs);
%>
${ arrs[1]}

<h3>域中集合的值</h3>
<%
	List<String> list =  new ArrayList<String>();
	list.add("小红");
	list.add("小李");
	request.setAttribute("list", list);
%>
${ list[1]}

<h3>域中Map集合的值</h3>
<%
	Map<String,String> map = new HashMap<String,String>();
	map.put("aa", "小红");
	map.put("bb.cc", "小李");
	request.setAttribute("map", map);
%>
${map.aa }
${map["bb.cc"] }
<h3>域中集合中有对象的值</h3>
<%
	List<User2> list1 =  new ArrayList<User2>();
	list1.add(new User2("小明","123"));
	list1.add(new User2("小红","456"));
	request.setAttribute("list1", list1);
%>
${ list1[1].username}
${ list1[1].password}

执行运算:

*语法:${运算表达式}

下面有示例代码,可以参考:

<h3>EL的运算</h3>
<%
	request.setAttribute("a", 1);
	request.setAttribute("b", 2);
	request.setAttribute("c", 3);
	request.setAttribute("d", 4);
%>	
<h3>加法运算</h3>
${a + b }

<h3>关系运算</h3>
<h3>大于</h3>
${a > b }		${a gt b }

<h3>小于</h3>
${a <b }		${a lt b }

<h3>等于</h3>
${a == b }		${a eq b }

<h3>不等于</h3>
${a != b }		${a ne b }

<h3>大于等于</h3>
${a <= b }		${a ge b }

<h3>小于等于</h3>
${a	<= b }		${a le b }

<h3>逻辑运算</h3>
<h3>与</h3>
${a > b &&  c > d }   ${a > b and  c > d }

<h3>或</h3>
${a > b ||  c > d }   ${a > b or  c > d }

<h3>非</h3>
${ !(a > b)   }   ${ not (a > b)  }

empty运算符:检查对象是否为null或“空”

二元表达式:${user!=null?user.name : “”}

获取WEB开发对象:

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

语法:${隐式对象名称}   作用:获得对象的引用

下面有一张表格是是关于web常用开发对象的介绍:

隐含对象名称描       述
pageContext对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
pageScope代表page域中用于保存属性的Map对象
requestScope代表request域中用于保存属性的Map对象
sessionScope代表session域中用于保存属性的Map对象
applicationScope代表application域中用于保存属性的Map对象
param表示一个保存了所有请求参数的Map对象
paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
header表示一个保存了所有http请求头字段的Map对象
headerValues同上,返回string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues["Accept-Encodings"]
cookie表示一个保存了所有cookie的Map对象
initParam表示一个保存了所有web应用初始化参数的map对象

下面有实例一点实例代码:

    <h3>EL的WEB对象</h3>
	${param.username }
	
	<h3>获取3的请求头</h3>
	${header.referer }
	
	<h3>获取全局初始化参数</h3>
	${initParam.username }
	
	<h3>pageContext对象</h3>
	${pageContext.request.remoteAddr }

调用Java方法:

这个本人目前还没做了解,详情可以参考:https://blog.csdn.net/SWkongjian/article/details/80455975

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值