EL 表达式

一:EL 表达式

1、EL 表达式用于获取数据,在JSP页面中可以使用 ${ 标识符 } 的形式,通知JSP 引擎调用 pageContext.findAttribute() 方法,以标识符为关键字从各个域对象中获取对象,如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是NULL)。

        实例:使用EL 表达式获取 request、session、application 域中的数据。

2、EL 表达式也可以使用${ customerBean.name } 的形式来访问JavaBean 对象的属性

        实例:使用EL 表达式获取Bean 属性

3、结合 JSTL 标签,EL 表达式也可以轻松获取各个集合中的元素。

        实例:使用EL 表达式获取List、Map 集合中的元素

4、EL 表达式也可以使用类如 ${ 1==1 }  的形式进行简单的逻辑判断。


二:范例

Person.java

package com.haizhu.domain;
public class Person {
	private String name;
	private int age;
	public Person(){
	}
	public Person(String name){
		this.name=name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
ELDemo.jsp

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'ELDemo.jsp' starting page</title>
  </head>
  
  <body>
	<%
		// 假设这个是从Servlet返回的数据,通过request 带给 JSP
		String data = "Hello World !";
		request.setAttribute("myData", data);
	 %>
	
	<!-- 页面接收的时候就可以使用 EL 表达式进行接收 -->
	<!-- 原理:pageContext.findAttribute("myData"),查找各个域的顺序是,
		page--request--session--appliaction,最后都没找到的话就返回一个“”空字符串 -->
	${myData }


<br><br>*********************************************************************<br><br>

	<%
		Person p = new Person();
		p.setName("Haizhu");
		request.setAttribute("person", p);
	 %>
	 ${person.name}

<br><br>*********************************************************************<br><br>

	<%
		List<Person> list = new ArrayList<Person>();
		list.add(new Person("aaList"));
		list.add(new Person("bbList"));
		list.add(new Person("ccList"));
		request.setAttribute("list", list);
	 %>
	<!-- 这里是单个取值,要想迭代的话需要配合 JSTL 使用 -->
	${list[0].name }			<!-- 注意,这里的list 和 上面声明并实例化的list 不是同一个 list, -->
	${list[1].name }			<!-- 只是在 setAttribute 的时候,将他们命名为同一个名字 -->
	${list[2].name }
	
<br><br>*********************************************************************<br><br>

	<%
		Map<String, Person> map = new HashMap<String, Person>();
		map.put("a",new Person("aaMap"));
		map.put("b",new Person("bbMap"));
		map.put("c",new Person("ccMap"));
		map.put("1",new Person("11111"));
		request.setAttribute("map", map);
	 %>
	${map.a.name }
	${map.b.name }
	${map.c.name }
	<br>
	<!-- 一般情况下按照上面的方法进行取值,当不能取出的时候(比如当key是数字的时候),可以使用下面的方式: -->
	${map['a'].name }
	${map['b'].name }
	${map['c'].name }
	${map['1'].name }
	<!-- 
		在 java 程序中,需要map.get(Key) 的方法进行取值
	System.out.println(map.get("a"));
	System.out.println(map.get("b"));
	System.out.println(map.get("c"));
	 -->

<br><br>*********************************************************************<br><br>
	<!-- 下面这个方法,取得当前WEB 应用的项目的路径(名称) -->
	${pageContext.request.contextPath }
	<br>
	<!-- 这个就表示是本项目根目录下的index.jsp 文件 -->
	<a href="${pageContext.request.contextPath}/index.jsp">点我</a>
  </body>
</html>
结果:

Hello World ! 

*********************************************************************

Haizhu 

*********************************************************************

aaList bbList ccList 

*********************************************************************

aaMap bbMap ccMap 
aaMap bbMap ccMap 11111 

*********************************************************************

/JspDemo 
点我 
其中“点我”的跳转路径是:
<a href="/JspDemo/index.jsp">点我</a>



问:EL 表达式不需要标签声明什么的?可以直接使用?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值