EL 表达式借鉴了 JavaScript 和 XPath 的表达式语言
EL 表达式提供了一种在 JSP 中简化表达式的方法
EL 表达式通常用于在某个作用域 {page、request、session、application等} 内取得属性值
${表达式}
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
JSP
<%--设置数据--%>
<%
pageContext.setAttribute("uname","pageContext");
request.setAttribute("uname", "request");
session.setAttribute("uname", "session");
application.setAttribute("uname", "application");
// 局部变量
String str="你好";
%>
局部变量${str}
域变量${uname}
局部变量
域变量pageContext
1、用 点 (.) 操作符
${对象名.属性}
2、 [] 操作符
.
或 -
等的属性名${对象名[属性]}
${数组[下标]}
3、 EL 表达式的简单用于,操作 Map 集合
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
JSP
<%--设置数据--%>
<%
Map map=new HashMap();
map.put("name","巧克力");
map.put("hobby","胡思乱想");
request.setAttribute("user",map);
%>
用户名:${user.name}
用户爱好:${user.hobby}
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
JSP
<%--设置数据--%>
<%
String str=null;
String str1="";
Map map=null;
Map map1=new HashMap();
Map map2=new HashMap();
map2.put("str","123");
request.setAttribute("str",str);
request.setAttribute("str1",str1);
request.setAttribute("map",map);
request.setAttribute("map1",map1);
request.setAttribute("map2",map2);
%>
空字符串:${empty str}
值为空格的字符串:${empty str1}
空 map:${empty map}
长度为0的 map:${empty map1}
有值的 map:${empty map2}
1、作用域访问对象
对象名称 | 说明 |
---|---|
pageScope | 与 page 作用域中的属性相关联的 Map 类 |
requestScope | 与 request 作用域中的属性相关联的 Map 类 |
sessionScope | 与 session 作用域中的属性相关联的 Map 类 |
applicationScope | 与 application 作用域中的属性相关联的 Map 类 |
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP</title>
</head>
<body>
<%--设置数据--%>
<%
pageContext.setAttribute("uname","pageContext");
request.setAttribute("uname", "request");
session.setAttribute("uname", "session");
application.setAttribute("uname", "application");
%>
PageContext作用域:${pageScope.uname}<br>
requset作用域:${requestScope.uname}<br>
session作用域:${sessionScope.uname}<br>
application作用域:${applicationScope.uname}<br>
</body>
</html>
对于实现逻辑控制、循环遍历等功能的 Java 脚本,需要使用 JSTL 标签来替代
Java Server Pages Standard Tag Library
即 JSP 标准标签库项目开发使用 JSTL 需要执行以下两个步骤的准备工作
1、在项目中引入 JSTL 的包
javax.servlet.jsp.jstl
jstl-api
1.2
javax.servlet
servlet-api
javax.servlet.jsp
jsp-api
org.glassfish.web
jstl-impl
1.2
javax.servlet
servlet-api
javax.servlet.jsp
jsp-api
javax.servlet.jsp.jstl
jstl-api
commons-fileupload
commons-fileupload
1.3.2
2、在 JSP 中使用 taglib 指令导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
三个标签1、
标签
标签用于输出表达式的结果,类似于 JSP 中的表达式 <%=%>
标签属性说明属性 | 说明 | 是否必须 |
---|---|---|
value | 需要输出的表达式的运算结果,可以通过 EL 表达式获取 | 是 |
default | value 属性的值为空时输出的默认值 | 否 |
escapeXml | 表示是否转换特殊字符,用于指定在 标签输出在 HTML 和 XML 中具有特殊意义的字符 如( < ,> ,、 ,& 等)时是否应该进行转义 |
否 |
2、
标签
标签的属性说明属性 | 说明 | 是否必须 |
---|---|---|
var | 设置的变量名 | 否 |
value | 要存储的值 | 否 |
scope | 变量的作用域,可选值有 page、request、session 和 application。 默认为 page |
否 |
target | 要设置的 JavaBean 对象或 Map 对象,可以使用 EL 表达式表示 | 否 |
property | 在 JavaBean 对象或 Map对象的情况下要设置的对象的属性或 key | 否 |
用户实体类 User
package com.example.demo;
public class Uset {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
JSP 代码
<%@ page import="com.example.demo.User" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/6/5
Time: 9:25
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"%>
JSTL 通用标签
<%
Map map=new HashMap();
User user=new User();
request.setAttribute("user", user);
request.setAttribute("map", map);
%>
<%--将 value 值存储在 session 中--%>
<%--将 value 值设置到 User 对象的 userName属性--%>
<%--将 value 值设置到 Map 集合中--%>