JavaWeb总结(八)—EL表达式

一、EL表达式简介

    EL全名Expression Language。主要有以下作用。

1.获取数据

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

2.执行运算

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

3.获取Web开发常用对象

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

4.调用Java方法

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

二、EL表达式之获取数据

     使用EL表达式获取数据格式: ${ }

     EL表达式在执行语句时,会调用pageContext.findAttribute(""),分别从page、request、session、application四个域对象中查找,如果找到就返回相应的值,没有找到就返回""(空字符串)。EL表达式可以很轻松的获取JavaBean的属性、获取集合中的数据。

<%@page import="com.kiwi.domain.Address"%>
<%@page import="com.kiwi.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
  
  	<br>----------------------获取域中存的数据----------------------<br>
  	<%
  		String data = "abcd";
  	    request.setAttribute("data",data);
  	%>
  	${data} <%-- pageContext.findAttribute("data") --%>
   
  
    <br>----------------------获取域中存的JavaBean数据----------------------<br>
  	<%
  		Person p1 = new Person();
  		p1.setName("Tom");
  	    request.setAttribute("person",p1);
  	%>
  	${ person.name }
  	
  	
    <br>----------------------获取域中存的JavaBean中的JavaBean的数据----------------------<br>
  	<%
  		Person p2 = new Person();
  		Address a = new Address();
  		a.setCity("北京");
  		p2.setAddress(a);
  	    request.setAttribute("person2",p2);
  	%>
  	${ person2.address.city}
  	
  	
  	<br>----------------------获取域中存的list集合中的数据----------------------<br>
  	<%
  		List<Person> list = new ArrayList<Person>();
  		list.add(new Person("AAA"));	
  		list.add(new Person("BBB"));	
  		list.add(new Person("CCC"));	
  		list.add(new Person("DDD"));	
  		request.setAttribute("list",list);
  	%>
  	${ list[1].name }
  	
  	
  	<br>----------------------获取域中存的map集合中的数据----------------------<br>
  	<%
  		Map map = new HashMap();
  		map.put("a",new Person("AAAA"));
  		map.put("b",new Person("BBBB"));
  		map.put("c",new Person("CCCC"));
  		map.put("d",new Person("DDDD"));
  		request.setAttribute("map",map);
  		
  	%>
  	${ map.a.name }
  	
  </body>
</html>

结果:

image

三、EL表达式之运算

     EL表达式支持如下运算符。

1.关系运算符

image

2.逻辑运算符

image

3.empty运算符

     检查对象是否为null。

4.二元运算符

     ${ username != null ? username : "" }

5.[] 和.运算符

四、EL表达式之获取Web开发常用对象

     EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取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对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”]

headerValues

表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]

cookie

表示一个保存了所有cookie的Map对象

initParam

表示一个保存了所有web应用初始化参数的map对象

<%@page import="com.kiwi.domain.Address"%>
<%@page import="com.kiwi.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
  
  <br>-----------------------------隐式对象-------------------------------<br>
  
  <br/>---------------1.pageContext对象:获取JSP页面中的pageContext对象------------------------<br/>
   ${pageContext}
  
  
  <br/>---------------2.pageScope对象:从page域(pageScope)中查找数据------------------------<br/>
  <%
  		pageContext.setAttribute("data","000");
  %>	
  ${ data }<%-- 这是从四个域里面找 --%>
  ${ pageScope.data }	
  
  
  
  <br/>---------------3.requestScope对象:从request域(requestScope)中查找数据------------------------<br/>
  <%
  		request.setAttribute("data","1111");
  %>	
  ${ requestScope.data }	
  
  
  
  <br/>---------------4.sessionScope对象:从session域(sessionScope)中查找数据------------------------<br/>
  <%
  		session.setAttribute("data","2222");
  %>	
  ${ sessionScope.data }	
  
  
  
  <br/>---------------5.applicationScope对象:从application域(applicationScope)中查找数据------------------------<br/>
  <%
  		application.setAttribute("data","3333");
  %>	
  ${ applicationScope.data }	
  	
  	
  </body>
</html>

结果:

image

原文地址:https://www.cnblogs.com/yangang2013/p/5398372.html