EL 表达式 & JSTL 标签库

7 篇文章 0 订阅
7 篇文章 0 订阅

EL 表达式 & JSTL 标签库

一、EL 表达式

1、什么是 EL 表达式,EL 表达式的作用?

EL 表达式的全称:Expression Language,是表达式语言。
EL 表达式的什么作用:
EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。 因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。

<html>
	<body> 
		<% request.setAttribute("key","值"); %>
		表达式脚本输出 key 的值是: 
		<%=request.getAttribute("key1")==null?"":request.getAttribute("key1")%>
		<br/> 
		EL 表达式输出 key 的值是:${key1} 
	</body>
</html>

EL 表达式的格式:${表达式}
EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。

2、EL 表达式搜索域数据的顺序

EL 表达式主要是在 jsp 页面中输出数据,主要是输出域对象中的数据。
当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。

<html>
	<body> 
		<% 
			request.setAttribute("key", "request");
			session.setAttribute("key", "session"); 
			application.setAttribute("key", "application"); 
			pageContext.setAttribute("key", "pageContext"); 
		%>
		${ key } 
	</body>
</html>

3、EL 表达式输出 Bean 的普通属性,数组属性,List 集合属性,map 集合属性

public class Person { 
	private String name; 
	private String[] phones; 
	private List<String> cities; 
	private Map<String,Object> map; 
	public int getAge() { 
		return 18; 
	}
}
<html>
	<body> 
		<% 
			Person person = new Person(); 
			person.setName("张三"); 
			person.setPhones(new String[]{"18888888888","18888888889","18888888886"}); 
			List<String> cities = new ArrayList<String>(); 
			cities.add("北京"); 
			cities.add("上海"); 
			cities.add("成都"); 
			person.setCities(cities); 
			Map<String,Object> map = new HashMap<>(); 
			map.put("key1","value1"); 
			map.put("key2","value2"); 
			map.put("key3","value3"); 
			person.setMap(map);
			pageContext.setAttribute("p", person); 
		%>
		输出 Person:${ p }<br/> 
		输出 Person 的 name 属性:${p.name} <br> 
		输出 Person 的 pnones 数组属性值:${p.phones[1]} <br> 
		输出 Person 的 cities 集合中的元素值:${p.cities} <br> 
		输出 Person 的 List 集合中某个元素值:${p.cities[1]} <br> 
		输出 Person 的 Map 集合: ${p.map} <br> 
		输出 Person 的 Map 集合中某个 key 的值: ${p.map.key2} <br> 
		输出 Person 的 age 属性:${p.age} <br> 
	</body>
</html>

4、EL 表达式——运算

语法:${ 运算表达式 } , EL 表达式支持如下运算符:
1)关系运算
eq 或 == 运算符: 等于
ne 或 != 运算符: 不等于
lt 或 < 运算符:小于
gt 或 > 运算符:大于
le 或 <= 运算符:小于等于
ge 或 >= 运算符:大于等于
2)逻辑运算
&& 或 and 运算符:与运算
|| 或 or 运算符:或运算
! 或 not 运算符:取反运算
3)算数运算
“ + ” 运算符:加法
“ - ” 运算符:减法
“ * ” 运算符:乘法
/ 或 div 运算符:除法
% 或 mod 运算符:取模
4)empty 运算
empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。
以下几种情况为空:
1、值为 null 值的时候,为空
2、值为空串的时候,为空
3、值是 Object 类型数组,长度为零的时候
4、list 集合,元素个数为零
5、map 集合,元素个数为零
5)三元运算
表达式 1 ?表达式 2 :表达式 3
如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值。

${ 12 != 12 ? "12不等于12":"12等于12" }

6)“ . ”点运算 和 [] 中括号运算符
“ . ”点运算,可以输出 Bean 对象中某个属性的值。
[] 中括号运算,可以输出有序集合中某个元素的值, 并且 [] 中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。

5、EL 表达式的 11 个隐含对象

EL 个达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。
pageContext
PageContextImpl 它可以获取 jsp 中的九大内置对象
pageScope
Map<String,Object> 它可以获取 pageContext 域中的数据
requestScope
Map<String,Object> 它可以获取 Request 域中的数据
sessionScope
Map<String,Object> 它可以获取 Session 域中的数据
applicationScope
Map<String,Object> 它可以获取 ServletContext 域中的数据
param
Map<String,String> 它可以获取请求参数的值
paramValues
Map<String,String[]> 它也可以获取请求参数的值,获取多个值的时候使用
header
Map<String,String> 它可以获取请求头的信息
headerValues
Map<String,String[]> 它可以获取请求头的信息,它可以获取多个值的情况
cookie
Map<String,Cookie> 它可以获取当前请求的 Cookie 信息
initParam
Map<String,String> 它可以获取在 web.xml 中配置的上下文参数
1)EL 获取四个特定域中的属性
pageScope ====== pageContext 域
requestScope ====== Request 域
sessionScope ====== Session 域
applicationScope ====== ServletContext 域
2)pageContext 对象的使用

<html>
	<body> 
		<% 
			pageContext.setAttribute("req", request); 
		%>
		<%=request.getScheme() %>	<br>
		1.协议: ${ req.scheme }<br> 
		2.服务器 ip:${ pageContext.request.serverName }<br> 
		3.服务器端口:${ pageContext.request.serverPort }<br> 
		4.获取工程路径:${ pageContext.request.contextPath }<br> 
		5.获取请求方法:${ pageContext.request.method }<br> 
		6.获取客户端 ip 地址:${ pageContext.request.remoteHost }<br> 
		7.获取会话的 id 编号:${ pageContext.session.id }<br> 
	</body>
</html>

3)EL 表达式其他隐含对象的使用
param
Map<String,String> 它可以获取请求参数的值
paramValues
Map<String,String[]> 它也可以获取请求参数的值,获取多个值的时候使用
header
Map<String,String> 它可以获取请求头的信息
headerValues
Map<String,String[]> 它可以获取请求头的信息,它可以获取多个值的情况
cookie
Map<String,Cookie> 它可以获取当前请求的 Cookie 信息
initParam
Map<String,String> 它可以获取在 web.xml 中配置的上下文参数

二、JSTL 标签库

JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库,是一个不断完善的开放源代码的 JSP 标签库。
EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。
在 jsp 标签库中使用 taglib 指令引入标签库
CORE 标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

XML 标签库

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> 

FMT 标签库

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

SQL 标签库

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> 

FUNCTIONS 标签库

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

1、JSTL 标签库的使用步骤

1、先导入 jstl 标签库的 jar 包。
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
2、第二步,使用 taglib 指令引入标签库。

2、core 核心库使用

<c:set />
作用:set 标签可以往域中保存数据
<c:if />
作用:if 标签用来做 if 判断
<c:choose> <c:when> <c:otherwise>
作用:多路判断,跟 switch … case … default 非常接近
<c:forEach />
作用:遍历输出使用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值