EL

EL表达式
一、EL表达式简介
EL全名为Expression Language.EL主要作用:
1)获取数据:EL表达式主要用于替换Jsp页面中的脚本表达式,以从各种类型的Web域中检索Java对象、获取数据.(某个Web域中的对象、访问javaBean的属性、访问list集合、访问map集合、访问数组)
2)执行运算:利用EL表达式可以在Jsp页面中执行一些基本的关系运算、逻辑运算和算数运算,以在Jsp页面中完成一些简单的逻辑运算
3)获取Web开发常用对象:EL表达式定义了一些隐式对象,利用这些隐式对象,Web开发人员可以很轻松获得对Web常用对象的引用,从而获得这些对象中的数据.
4)调用Java方法:EL表达式允许用户开发自定义EL函数,以在Jsp页面中通过EL表达式调用Java类的方法.

获取数据:
  EL表达式获取数据语法:" 标 识 符 " ; E L 表 达 式 在 执 行 时 会 调 用 p a g e C o n t e x t . f i n d A t t r i b u t e 方 法 , 用 标 识 符 为 关 键 字 , 分 别 从 p a g e 、 r e q u e s t 、 s e s s i o n 、 a p p l i c a t i o n 四 个 域 中 查 找 响 应 的 对 象 , 找 到 则 返 回 相 应 对 象 , 找 不 到 则 返 回 " " ( 不 是 n u l l , 是 空 字 符 串 ) .     E L 表 达 式 也 可 以 很 轻 松 获 取 J a v a B e a n 的 属 性 , 或 者 获 取 数 组 、 c o o l e c t i o n 、 m a p 类 型 集 合 的 数 据 :     {标识符}";EL表达式在执行时会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找响应的对象,找到则返回相应对象,找不到则返回" "(不是null,是空字符串).   EL表达式也可以很轻松获取JavaBean的属性,或者获取数组、coolection、map类型集合的数据:    ";ELpageContext.findAttribute,,pagerequestsessionapplication,,""(null,).  ELJavaBean,coolectionmap:  {user.address.province};
   u s e r . l i s t [ 2 ] ;     访 问 有 序 集 合 某 个 位 置 的 元 素     {user.list[2]};  访问有序集合某个位置的元素    user.list[2];  访  {map.key};  获得map集合中指定key的值
执行运算:
  语法:${运算表达式}
  在这里插入图片描述
在这里插入图片描述
  empty运算符:检查对象是否为null或"空".

获得Web开发常用对象:
  EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便的获取Web开发中一些常用对象,并读取这些对象的数据;语法:${隐式对象名称}来获取对象的引用
  在这里插入图片描述
在这里插入图片描述
EL注意事项:
  EL比到时是Jsp2.0规范中的一门技术,因此若想正确解析EL表达式,需使用支持Servlet2.4/Jsp2.0技术的Web服务器.有些Tomcat服务器不能使用EL表达式,可以升级成tomcat6以上,在Jsp中加入<%@page isELlgnored=“false”%>

测试:
  people类

package com.aimuti.model;

public class People {
	
	private String name;
	
	public People() {
		super();
		// TODO Auto-generated constructor stub
	}

	public People(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

index.jsp

<body>
<%
	request.setAttribute("name", "zhangsan");
	pageContext.setAttribute("name", "lisi");
%>
<h1> ${name}</h1>
<!-- name取值,会按以下顺序从小范围到大范围去查找 -->
<!-- 1.pageScope 2.requestScope 3.sessionScope 4.applicationScope
如果按照以下顺序都没有查找到,就返回空字符串 -->
------ ${h} -------
  <hr>
<!-- 可以通过域获取对应的值 -->
 ${requestScope.name}
 <hr>
 
 <%
 	People people = new People("zhangsan");
 	pageContext.setAttribute("user1", people);
 %>
	 ${user1.name }
	 <hr>
<%
	People people2 = new People("zhangsan");
	People people3 = new People("lisi");
	List<People> list = new ArrayList<>();
	list.add(people2);
	list.add(people3);
	pageContext.setAttribute("list", list);
%>
  	${list[1].name}
  	<hr>
  	
  	
  	<%
  		People people4 = new People("zhangsan");
  		People people5 = new People("lisi");
  		HashMap<String,People> map = new HashMap<>();
  		map.put("1", people4);
  		map.put("2", people5);
  		pageContext.setAttribute("map", map);
  	%>
		${map['1'].name }
	
	<%
		pageContext.setAttribute("a", 2);
		pageContext.setAttribute("b", 5);
		String zhangsan = null;
		pageContext.setAttribute("str", zhangsan);
	%>
	
	<!-- EL支持算数运算符 -->
	${a+b} <!-- +-*/ -->
	<!-- EL支持比较运算符 -->
	${a>b} <!-- > < >= <= ==  -->
	<!-- El支持逻辑运算符 -->
	${a>1 && b<8}
	${a>1 and b<10} <!-- and or -->
	
	${str == null}
	
	${str eq "123"} <!-- str.euqals("123") -->

	<!-- 空判断 -->
	${empty str} <!-- if(str == null || str.equals("")) -->
	
	<!-- 非空判断 -->
	${not empty str}
	<hr>
</body>

在这里插入图片描述

register.jsp

<body>
<form action="index2.jsp" method="post">
	name:<input type="text" name="username" /><br>
	password:<input type="text" name="password"/><br>
	favorite:<input type="checkbox" name="fav" value="abc"/>abc<br>
			<input type="checkbox" name="fav" value="qwe"/>qwe<br>
			<input type="submit" >
</form>
</body>

index2.jsp

<body>
	<!-- EL支持通过参数取值,格式:${param.参数名} -->
	<%
	  String[] favs = request.getParameterValues("fav");

		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
	%>
	
	name:${param.username}
	password:${param.password}
	<hr>
	<!-- ${paramValues.参数名[index]} 取得的是参数名一样的一组值 -->
	fav:${paramValues.fav[0]}
	<hr>
	<%
		Cookie cookie = new Cookie("user","zhangsan");
		response.addCookie(cookie);
	%>
	
	<!-- ${cookie对象.cookie名.name}
		${cookie对象.cookie名.value} -->
	${cookie.user.name}
	${cookie.user.value}
	<hr>
	<!-- 从请求头获取数据 -->
	${header.Host}
	${headerValues.cookie[0]}
	<hr>
</body>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值