欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EL表达式

程序员文章站 2022-05-06 07:50:16
...

目录

EL表达式

如何使用 :

1. 取出4个作用域中存放的值。

2.取值细节:

3.取值方式 :

4.EL表达式支持的运算:

EL表达式 的11个内置对象:


EL表达式

格式:${ name   }如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完都没有, 就没有显示

作用:简化在jsp里面写的那些java代码。

如何使用 :

1. 取出4个作用域中存放的值。

	<%
		pageContext.setAttribute("name", "page");
		request.setAttribute("name", "request");
		session.setAttribute("name", "session");
		application.setAttribute("name", "application");
	%>
	
	按普通手段取值<br>
	
	<%= pageContext.getAttribute("name")%>
	<%= request.getAttribute("name")%>
	<%= session.getAttribute("name")%>
	<%= application.getAttribute("name")%>
	
	<br>使用EL表达式取出作用域中的值<br>
	
	${ pageScope.name }
	${ requestScope.name }
	${ sessionScope.name }
	${ applicationScope.name }
  • 如果域中所存的是数组 :
<%
   	String [] a = {"aa","bb","cc","dd"};
   	pageContext.setAttribute("array", a);
%>
   		
使用EL表达式取出作用域中数组的值<br>
   		
${array[0] } , ${array[1] },${array[2] },${array[3] }
  • 如果域中锁存的是集合:
	使用EL表达式取出作用域中集合的值<br>

	${li[0] } , ${li[1] },${li[2] },${li[3] }

	<br>-------------Map数据----------------<br>
	<%
		Map map = new HashMap();
		map.put("name", "zhangsna");
		map.put("age",18);
		map.put("address","北京..");
		
		map.put("address.aa","深圳..");
		pageContext.setAttribute("map", map);
	%>
  • 取出Map集合的值 :
        <%
      		Map map = new HashMap();
      		map.put("name", "zhangsna");
      		map.put("age",18);
      		map.put("address","北京..");
      		
      		map.put("address.aa","深圳..");

   		pageContext.setAttribute("map", map);
   	%>
   	使用EL表达式取出作用域中Map的值<br>
   	
   	${map.name } , ${map.age } , ${map.address }  , ${map["address.aa"] }

2.取值细节:

  • 从域中取值。 得先存值。
<%
    //pageContext.setAttribute("name", "zhangsan");
    session.setAttribute("name", "lisi...");
%>
<br>直接指定,到这个作用域里面去找这个name<br>
   ${ pageScope.name } 
<br>
先从page里面找,没有去request找,再去session,最后去application <br>
   ${ name }
<br>指定从session中取值<br>
   ${ sessionScope.name }  

3.取值方式 :

  • 如果这份值是有下标的,那么直接使用[]
<%
	String [] array = {"aa","bb","cc"}
	session.setAttribute("array",array);
%>
${ array[1] } 这里array说的是attribute的name 
  • 如果没有下标, 直接使用 .的方式去取
<%
	User user = new User("zhangsan",18);
	
	session.setAttribute("u", user);
%>

${ u.name }  , ${ u.age } 

4.EL表达式支持的运算:

类别 运算符
算数运算符 +、-、*、/ (或div)、% (或mod)
关系运算符 == (eq)、!= (ne)、< (lt)、> (gt)、<= (le) 、>= (ge)
逻辑运算符 && (and)、|| (or)、! (not)
验证运算符 empty

注:优先级:

EL表达式

EL表达式 的11个内置对象:

${ 对象名.成员 }

和JSP共有的对象

  • pageContext:实例对应于当前页面的处理

作用域相关对象

  • pageScope:与页面作用域属性的名称和值相关联的 Map类

  • requestScope:与请求作用域属性的名称和值相关联的 Map类

  • sessionScope:与会话作用域属性的名称和值相关联的 Map类

  • applicationScope:与应用程序作用域属性的名称和值相关联的 Map类

头信息相关对象

  • header:按名称存储请求头主要值的 Map

  • headerValues:将请求头的所有值作为 String 数组存储的 Map

参数信息相关对象

  • param:按名称存储请求参数的主要值的Map类

  • paramValues:将请求参数的所有值作为 String 数组存储的 Map

  • cookie :按名称存储请求附带的 cookie 的 Map

全局初始化参数

  • initParam:按名称存储 Web 应用程序上下文初始化参数的 Map

尽管 JSP 和 EL 隐式对象中只有一个公共对象( pageContext ),但通过 EL 也可以访问其它 JSP 隐式对象。原因是 pageContext 拥有访问所有其它八个 JSP 隐式对象的特性。实际上,这是将它包括在 EL 隐式对象中的主要理由。

其余所有 EL 隐式对象都是映射,可以用来查找对应于名称的对象。前四个映射表示先前讨论的各种属性作用域。可以用它们来查找特定作用域中的标识符,而不用依赖于 EL 在缺省情况下使用的顺序查找过程。

接下来的四个映射用来获取请求参数和请求头的值。因为 HTTP 协议允许请求参数和请求头具有多个值,所以它们各有一对映射。每对中的第一个映射返回请求参数或头的主要值,通常是恰巧在实际请求中首先指定的那个值。每对中第二个映射允许检索参数或头的所有值。这些映射中的键是参数或头的名称,但这些值是 String 对象的数组,其中的每个元素都是单一参数值或头值。

cookie 隐式对象提供了对由请求设置的 cookie 名称的访问。这个对象将所有与请求相关联的 cookie 名称映射到表示那些 cookie 特性的 Cookie 对象。

最后一个 EL 隐式对象 initParam 是一个映射,它储存与 Web 应用程序相关联的所有上下文的初始化参数的名称和值。初始化参数是通过 web.xml 部署描述符文件指定的,该文件位于应用程序的 WEB-INF 目录中。