一、EL表达式
1.EL表达式概述
EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。
2.基本语法
EL表达式的语法格式非常简单,写为 ${表达式内容}
3.EL表达式入门
3.1、JSP页面中编写代码
<%-- Created by IntelliJ IDEA. User: 86136 Date: 2024/6/5 Time: 14:35 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>El表达式入门案例</title> </head> <body> <%--使用java代码在请求域中存入为message的数据--%> <% request.setAttribute("message","Expression Language");%> <br> <%--java代码块获取--%> java代码块获取:<%out.print(request.getAttribute("message"));%> <br> <%--jsp表达式获取:--%> jsp表达式获取:<%=request.getAttribute("message")%> <%--El表达式获取:--%> El表达式获取:${message} </body> </html>
二、EL表达式基本用法
1、运算
1.1、算术运算符
运算符 作用 示例 + 加 ${5+5} - 减 ${5 - 5} * 乘 ${3 * 5} /或者div 除 ${9 / 2}
或者 ${9 div 2}%或者mod 取余 ${9%2}
或者 ${9 mod 2}
1.2、逻辑运算符
运算符 作用 示例 结果 && 或 and 并且 ${A && B} 或 ${A and B} true / false || 或 or 或者 ${A ! 或 not 取反 ${ !A } 或 ${ not A } true / false
1.3 、比较运算符
运算符 作用 示例 结果 == 或 eq 等于 ${5 == 5}
或 ${5 eq 5}true != 或 ne 不等于 ${5 != 5}
或 ${5 ne 5}false < 或 lt 小于 ${3 < 5}
或 ${3 lt 5}true > 或 gt 大于 ${3 > 5}
或 ${3 gt 5}false <= 或 le 小于等于 ${3 <= 5}
或 ${3 le 5}true >= 或 ge 大于等于 ${3 >= 5}
或 ${3 ge 5}false
1.4、特殊运算符
运算符 作用 empty 1.判断对象是否为null 2.判断字符串是否为空字符串 3.判断容器元素长度是否为0 条件 ? 表达式1 : 表达式2 三元运算符
2、代码演示:
<%@ page import="com.Part" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashMap" %><%-- Created by IntelliJ IDEA. User: 86136 Date: 2024/6/5 Time: 14:55 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>基本用法</title> </head> <body> <%--算术运算符--%> ${5+5}<br> ${5-4}<br> ${5*4}<br> ${5/2} -- ${5 div 2}<br> ${5%2} -- ${5 mod 2}<br> <%--逻辑运算--%> ${1>2 && 1>3}<br> ${1>2 && 4 > 1}<br> <%--比较运算符--%> ${1==1} -- ${1 eq 1}<br> ${1!=1} -- ${1 ne 1}<br> ${1<2} -- ${1 lt 2}<br> ${1>1} -- ${1 gt 1}<br> ${1<=1} -- ${1 le 1}<br> ${1>=1} -- ${1 ge 1}<br> <%--特殊运算符--%> <% request.setAttribute("msg",""); %> ${empty msg}<br> ${3>2? "女孩":"男孩"} </body> </html>
3、获取值
2.1、获取普通值
${域名称.键名}
<%--获取值 ${域名称.键名}--%> <% request.setAttribute("msg","我喜欢你"); %> ${msg}
2.2、获取自定义对象
${域名称.键名.属性名}
package com;
/**
* @author 86136
*/
public class Part {
private String name;
private String sex;
private int age;
public Part() {
}
public Part(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Part{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
<%--获取自定义对象 ${域名称.键名.属性名}--%> <% Part part = new Part("苏沐橙", "女孩", 19); request.setAttribute("role",part); %> ${requestScope.role}<br> ${requestScope.role.name}<br> ${requestScope.role.sex}<br> ${requestScope.role.age}<br>
2.3、获取数组元素
${域名称.键名[索引]}
<% String[] str = {"苏沐橙","涂山红红"}; request.setAttribute("arr",str); %> ${arr[0]}<br> ${arr[1]}<br>
2.4、获取list集合元素
<% Part part1 = new Part("苏沐橙", "女孩", 19); ArrayList<Object> list = new ArrayList<>(); list.add("陈雨舒"); list.add("瑶瑶"); list.add(part1); request.setAttribute("list",list); %> ${list[0]}<br> ${list[1]}<br> ${list[2].name}<br>
2.5、获取Map集合元素
<% HashMap<String, Object> map = new HashMap<>(); map.put("code",200); map.put("msg","访问成功"); request.setAttribute("map",map); %> ${map.code}<br> ${map["msg"]}
三、 EL表达式的隐式对象
隐式对象名称 说明 pageContext 功能完全相同 applicationScope 操作应用域对象数据 sessionScope 操作会话域对象数据 requestScope 操作请求域对象数据 pageScope 操作页面域对象数据 header 获取请求头数据 headerValues 获取请求头数据(多个值) param 获取请求参数数据 paramValues 获取请求参数数据(多个值) initParam 获取全局配置参数数据 cookie 获取Cookie对象
el表达式中有11个隐式对象
pageContext:
* 获取jsp其他八个内置对象
* ${pageContext.request.contextPath}:动态获取虚拟目录
四、 JSTL
1、JSTL概述
JSTL的全称是:JSP Standard Tag Libary。它是JSP中标准的标签库。它是由Apache实现的。
它由以下5个部分组成:
组成 作用 说明 Core 核心标签库。 通用逻辑处理 Fmt 国际化有关。 需要不同地域显示不同语言时使用 Functions EL函数 EL表达式可以使用的方法 SQL 操作数据库。 不用 XML 操作XML。 不用
2、使用要求:
1、把javax.servlet.jsp.jstl.jar和jstl-impl.jar加人工程WEB-INF目录下创建一个lib目录
2、在后缀jsp引入标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、JSTLL核心标签库:
标签名称 功能分类 分类 作用 <c:if>
流程控制 核心标签库 用于判断 <c:choose> ,<c:when>,<c:otherwise>
流程控制 核心标签库 用于多个条件判断 <c:foreache>
迭代操作 核心标签库 用于循环遍历
4、JSTL使用
1、 if语句(相当于java代码的if语句 )
1、属性:
* test 必须属性,接受boolean表达式
*如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容 * 一般情况下,test属性值会结合el表达式一起使用
2、注意:
c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
2、choose语句(相当于java代码的switch语句 )
1. 使用choose标签声明 相当于switch声明
2. 使用when标签做判断 相当于case
3. 使用otherwise标签做其他情况的声明 相当于default
3、foreache语句
begin:开始值 end:结束值 var:临时变量 step:步长
items:容器对象
var:容器中元素的临时变量
varStatus:循环状态对象
index:容器中元素的索引,从0开始 count:循环次数,从1开始
5、代码演示:
<%@ page import="java.util.ArrayList" %><%-- Created by IntelliJ IDEA. User: 86136 Date: 2024/6/5 Time: 15:20 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>JSTL</title> </head> <body> <% ArrayList<Object> list = new ArrayList<>(); list.add("aa"); request.setAttribute("list",list); request.setAttribute("num",5); %> <%--if语句--%> <c:if test="${empty list}"> 集合为空 </c:if> <c:if test="${not empty list}"> 集合不为空 </c:if> <br> <c:if test="${num % 2 == 0}"> 偶数 </c:if> <c:if test="${num % 2 != 0}"> 基数 </c:if> <%--choose语句 --%> <c:choose> <c:when test="${num==1}">周一</c:when> <c:when test="${num==2}">周二</c:when> <c:when test="${num==3}">周三</c:when> <c:when test="${num==4}">周四</c:when> <c:when test="${num==5}">周五</c:when> <c:otherwise>数字有误!</c:otherwise> </c:choose> <%--foreache语句 begin:开始值 end:结束值 var:临时变量 step:步长--%> <c:forEach begin="1" end="10" var="i" step="1"> ${i} </c:forEach> <%--items:容器对象 var:容器中元素的临时变量 varStatus:循环状态对象 index:容器中元素的索引,从0开始 count:循环次数,从1开始--%> <% ArrayList<Object> list1 = new ArrayList<>(); list1.add("苏沐橙"); list1.add("瑶瑶"); list1.add("陈雨舒"); request.setAttribute("list1",list1); %> <br> <c:forEach items="${list1}" var="s" varStatus="x"> ${x.index} -- ${x.count} -- ${s}<br> </c:forEach> </body> </html>