EL 表达式 & JSTL 标签库(Java Web 学习笔记)

EL 表达式 & JSTL 标签库

  • 1.EL 表达式
    • a)什么是 EL 表达式,EL 表达式的作用?
    • b)EL 表达式搜索域数据的顺序
    • c)EL 表达式输出 Bean 的普通属性,数组属性。List 集合属性,map 集合属性
    • d)EL 表达式——运算
      • 1)关系运算
      • 2)逻辑运算
      • 3)算数运算
      • 4)empty 运算
      • 5)三元运算
      • 6)“.”点运算 和 [] 中括号运算符
    • e)EL 表达式的 11 个隐含对象
      • i.EL 获取四个特定域中的属性
      • ii.pageContext 对象的使用
      • iii.EL 表达式其他隐含对象的使用
  • 2、JSTL 标签库(次重点****)
    • a)什么是JSTL标签库
    • b)JSTL标签库作用
    • c)JSTL标签库
    • d) JSTL 标签库的使用步骤
    • e) core 核心库使用

1.EL 表达式

a)什么是 EL 表达式,EL 表达式的作用?

EL 表达式的全称是:Expression Language。是表达式语言。
EL 表达式的什么作用:

EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。
因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。


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

EL 表达式的格式是:

${表达式}

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

b)EL 表达式搜索域数据的顺序

EL 表达式主要是在 jsp 页面中输出数据。主要是输出域对象中的数据。

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


<%
//往四个域中都保存了相同的key 的数据。	
request.setAttribute("key", "request");	

session.setAttribute("key", "session");	
application.setAttribute("key", "application");	
pageContext.setAttribute("key", "pageContext");	
%>	
${ key }


c)EL 表达式输出 Bean 的普通属性,数组属性。List 集合属性,map 集合属性

i.需求——输出 Person 类中普通属性,数组属性。list 集合属性和 map 集合属性。

Person 类

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第1张图片

输出的代码:

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第2张图片

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第3张图片

d)EL 表达式——运算

语法:

${  运算表达式 }  

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

1)关系运算

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第4张图片

2)逻辑运算

在这里插入图片描述

3)算数运算

在这里插入图片描述
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第5张图片

4)empty 运算

empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。以下几种情况为空:
1、值为 null 值的时候,为空
2、值为空串的时候,为空
3、值是 Object 类型数组,长度为零的时候
4、list 集合,元素个数为零
5、map 集合,元素个数为零

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第6张图片

5)三元运算

表达式 1?表达式 2:表达式 3
如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值。

示例:

${ 12 != 12 ? "帅呆":"又骗人啦" }

6)“.”点运算 和 [] 中括号运算符

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


<%
Map map = new	

HashMap();
map.put("a.a.a", "aaaValue");	
map.put("b+b+b", "bbbValue");	
	map.put("c-c-c", "cccValue");

request.setAttribute("map", map);
%>

${ map['a.a.a'] } 
${ map["b+b+b"] }
${ map['c-c-c'] }

e)EL 表达式的 11 个隐含对象

EL 个达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。

变量 类型 作用

pageContext PageContextImpl 它可以获取 jsp 中的九大内置对象
pageScope Map 它可以获取 pageContext 域中的数据
requestScope Map 它可以获取 Request 域中的数据
sessionScope Map 它可以获取 Session 域中的数据
applicationScope Map 它可以获取 ServletContext 域中的数据
param Map 它可以获取请求参数的值
paramValues Map 它也可以获取请求参数的值,获取多个值的时候使用。
header Map 它可以获取请求头的信息
headerValues Map 它可以获取请求头的信息,它可以获取多个值的情况
cookie Map 它可以获取当前请求的 Cookie 信息
initParam Map 它可以获取在 web.xml 中配置的上下文参数

i.EL 获取四个特定域中的属性

pageScope ====== pageContext 域
requestScope ====== Request 域
sessionScope ====== Session 域
applicationScope ====== ServletContext 域


<%
pageContext.setAttribute("key1", "pageContext1");	
pageContext.setAttribute("key2", "pageContext2");	
request.setAttribute("key2", "request");		
session.setAttribute("key2", "session");		
	application.setAttribute("key2", "application");	
%>
${ applicationScope.key2 }
	

ii.pageContext 对象的使用

1.协议:
2.服务器 ip:
3.服务器端口:
4.获取工程路径:
5.获取请求方法:
6.获取客户端 ip 地址:
7.获取会话的 id 编号:

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第7张图片
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第8张图片

iii.EL 表达式其他隐含对象的使用

param		Map		它可以获取请求参数的值
paramValues	Map	它也可以获取请求参数的值,获取多个值的时候使用。 

示例代码:
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第9张图片

请求地址:

http://localhost:8080/09_EL_JSTL/other_el_obj.jsp?username=wzg168&password=666666&hobby=java&hobby=cpp

header			Map		它可以获取请求头的信息
headerValues	Map	它可以获取请求头的信息,它可以获取多个值的情况

示例代码:
在这里插入图片描述

cookie	Map	它可以获取当前请求的 Cookie 信息

示例代码:
在这里插入图片描述

initParam	Map	它可以获取在 web.xml 中配置的上下文参数

web.xml 中的配置:
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第10张图片

示例代码:
在这里插入图片描述

2、JSTL 标签库(次重点****)

a)什么是JSTL标签库

JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的 JSP 标签库。

b)JSTL标签库作用

EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。

c)JSTL标签库

JSTL 由五个不同功能的标签库组成。

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第11张图片

在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" %>

d) JSTL 标签库的使用步骤

1、先导入 jstl 标签库的 jar 包。taglibs-standard-impl-1.2.1.jar taglibs-standard-spec-1.2.1.jar
2、第二步,使用 taglib 指令引入标签库。
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

e) core 核心库使用

i.(使用很少)

作用:

set 标签可以往域中保存数据

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第12张图片

ii.

if 标签用来做 if 判断。

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第13张图片

iii. 标签

作用:

多路判断。跟 switch … case default 非常接近

EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第14张图片
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第15张图片

iv. /

作用:

遍历输出使用。

1.遍历 1 到 10,输出

示例代码:
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第16张图片

2.遍历Object 数组

示例代码:
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第17张图片

3.遍历Map 集合

示例代码:

<%
Map map = new HashMap();
map.put("key1", "value1");	
map.put("key2", "value2");	
map.put("key3", "value3");	
//	for ( Map.Entry entry : map.entrySet()) {
//	}	
	request.setAttribute("map", map);
%>

${entry.key} = ${entry.value}

4.遍历List 集合—list 中存放 Student 类,有属性:编号,用户名,密码,年龄, 电话信息
Student 类:
EL 表达式 & JSTL 标签库(Java Web 学习笔记)_第18张图片

示例代码:

<%--4.遍历List 集合---list 中存放 Student 类,有属性:编号,用户名,密码,年龄,电话信息--%>

<% 
List studentList = new ArrayList(); 
for (int i = 1; i <= 10; i++) { 
studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i)); 
}
request.setAttribute("stus", studentList); 
%>


<%--
items 表示遍历的集合
var  表 示 遍 历 到 的 数 据begin  表示遍历的开始索引值end 表示结束的索引值
step 属性表示遍历的步长值
varStatus 属性表示当前遍历到的数据的状态
for(int i = 1; i < 10; i+=2)
--%>
编号 用户名 密码 年龄 电话 操作
${stu.id} ${stu.username} ${stu.password} ${stu.age} ${stu.phone} ${status.step}

你可能感兴趣的:(java,web,jstl,jsp)