EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
EL&Filter&Listener-授课
1 EL表达式和JSTL
1.1 EL表达式
1.1.1 EL表达式介绍 ***
-
EL(Expression Language):表达式语言
-
在 JSP 2.0 规范中加入的内容,也是 Servlet 规范的一部分
-
作用:在 JSP 页面中获取数据。让我们的 JSP 脱离 java 代码块和 JSP 表达式
-
语法:${ 表达式内容 }
-
例如:

1.1.2 EL表达式的快速入门
-
创建一个 web 项目:el_demo,虚拟目录/el
-
在 web 目录下创建 el01.jsp
-
在文件中向域对象添加数据
-
使用三种方式获取域对象中的数据(java 代码块、JSP 表达式、EL 表达式)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>EL表达式快速入门</title>
</head>
<body>
<%--1.向域对象中添加数据--%>
<% request.setAttribute("username","zhangsan"); %>
<%--2.获取数据--%>
Java代码块:<% out.println(request.getAttribute("username")); %> <br>
JSP表达式:<%= request.getAttribute("username")%> <br>
EL表达式:${username}
</body>
</html>
-
部署并启动项目
-
通过浏览器测试

1.1.3 EL表达式获取不同类型数据 ***
-
要获取的数据类型
-
获取基本数据类型的数据
-
获取自定义对象类型的数据
-
获取数组类型的数据
-
获取 List 集合类型的数据
-
获取 Map 集合类型的数据
-
案例:新建el02.jsp
<%@ page import="com.itheima.bean.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>EL表达式获取不同类型数据</title>
</head>
<body>
<%--1.获取基本数据类型--%>
<% pageContext.setAttribute("num",10); %>
基本数据类型:${num} <br>
<%--2.获取自定义对象类型--%>
<%
Student stu = new Student("张三",23);
pageContext.setAttribute("stu",stu);
%>
自定义对象:${stu} <br>
<%--stu.name 实现原理 getName()--%>
学生姓名:${stu.name} <br>
学生年龄:${stu.age} <br>
<%--3.获取数组类型--%>
<%
String[] arr = {"hello","world"};
pageContext.setAttribute("arr",arr);
%>
数组:${arr} <br>
0索引元素:${arr[0]} <br>
1索引元素:${arr[1]} <br>
<%--EL表达式中没有字符串拼接--%>
0索引拼接1索引的元素:${arr[0]} + ${arr[1]} <br>
<%--4.获取List集合--%>
<%
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
pageContext.setAttribute("list",list);
%>
List集合:${list} <br>
0索引元素:${list[0]} <br>
<%--5.获取Map集合--%>
<%
HashMap<String,Student> map = new HashMap<>();
map.put("hm01",new Student("张三",23));
map.put("hm02",new Student("李四",24));
pageContext.setAttribute("map",map);
%>
Map集合:${map} <br>
第一个学生对象:${map.hm01} <br>
第一个学生对象的姓名:${map.hm01.name}
</body>