el表达式
可以用el表达式获取到指定域中的属性值
语法:
${el表达式}
操作符:
“.” 获取对象的属性,
- 用于对象获取属性值
- 用于获取map中的对象的属性值
“[]”
-
获取对象的属性,例如 ${user[“name”]}。
-
获取集合中的对象,例如 userList[0]
设置文件头:
<%@ page contentType="text/html;charset=UTF-8"
isELIgnored="false"
language="java" %>
isELIgnored 是否不使用 el表达式 默认是true
让我们先设置一下不同域中的属性
// 设置request域的属性值
request.setAttribute("name","zhangsan request");
// 设置session域的属性值
session.setAttribute("name","zhangsan session");
// 设置application域的属性值
application.setAttribute("name","zhangsan application");
在jsp中开始获取咯:
// 这个是使用内嵌Java代码获取不同域的属性
<%
out.print(request.getAttribute("name"));
out.print("<br/>");
out.print(session.getAttribute("name"));
out.print("<br/>");
out.print(application.getAttribute("name"));
out.print("<br/>");
%>
// el 表达式来啦
${name}
// 获取属性值为name的值,会从 request > session > application 依次设置,如果存在就返回,不存在就向下,如果application也没有找到,则返回null
${requestScope.name} // 获取request 域中的请求
${sessionScopec.name} // 获取session 域中的请求
${applicationScope.name} // 获取application 域中的请求
运算符 | 说明 |
---|---|
() | 改变执行的优先级,如${3 * (4+5)} |
+,-,/,*, | 算术运算符,如 ${3+2} |
==,!=,>,>=,<,<= | 关系运算符,例如${a == b} 或 ${a eq b} |
&&,|| ,! | 逻辑运算符,例如${ true && false} |
?: | 条件运算符,例如${a > b ? 1 : 2} |
empty | 用于检测变量名是否为空,是否等于null,如 ${empty name} |
JSTL
JSTL(JavaServerPages Standard Tag Library)
- JSP标准标签库
- 实现JSP页面的逻辑控制
使用步骤:
- 导入jar包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
- 在jsp页面中添加指令
<%--JSTL使用库--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--国际化/格式化标签库--%>
<%@ taglib uri ="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
标签一览:
标签库名称 | 作用 |
---|---|
<c:out /> | 输出文本内容到out对象,常用于显示特殊字符,显示默认值 |
<c:set /> | 在作用域中设置变量或对象属性的值 |
<c:remove /> | 在作用域中移除变量的值 |
<c:if /> | 实现条件判断结构 |
<c:forEach /> | 实现循环结构,可用于 list、map |
<c:url /> | 构造url地址 |
<c:param /> | 在url后附加参数 |
<c:import /> | 在页面中嵌入另一个资源内容 |
<fmt:formatDate /> | 格式化时间 |
<fmt:formatNumber /> | 格式化数字 |
标签的使用:
<p>使用JSTL 中 if 标签</p>
<c:if test="${!empty user}">
<p>只有属性值中有user属性 <span style="color: red;">才显示~~~~</span></p>
</c:if>
<br/>
<p>使用JSTL 中的 forEach标签遍历 list</p>
<%--
items 是集合
var 是每次对象获取出来的存放的变量名
--%>
<c:forEach items="${userList}" var="user">
<p>${user.name}</p>
</c:forEach>
<br/>
<p>使用JSTL中的forEach标签遍历 Map对象</p>
<%--
map中是以 key value存储的那么取值就是
对象.key
对象.value
--%>
<c:forEach items="${userMap}" var="o">
<p>${o.key}</p>
<p>${o.value.name}</p>
</c:forEach>
<p>
对当前时间格式化:
<fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd"></fmt:formatDate>
</p>
<%--
var 相当于 setAttribute中的第一个参数
scope 是指定 作用域
value是值 相当于 setAttribute中的第二个参数
--%>
<c:set var="user" scope="request" value="<%=user1%>"></c:set>
<c:remove var="user" scope="request"></c:remove>