文章目录
1.EL表达式
1.1什么是EL表达式?
EL表达式的全称是:Expression Language. 是表达式语言
1.2EL表达式的作用
EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出
因为EL表达式在输出数据时,要比jsp脚本简洁很多。
EL表达式的格式是:
${表达式}
1.3EL表达式搜索域数据的顺序
EL表达式主要是在jsp页面中输出数:主要输出的数域对象中的数据
当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
1.4EL表达式输出复杂的Bean对象
- 需求一一输出Peoson类中的普通属性,数组属性。List集合属性和map集合属性。
1.5EL表达式——运算
语法:${ 运算表达式 }, EL表达式支持如下运算符:
1.5.1关系运算
关系运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
== 或 eq | 等于 | ${ 5==5 } 或 ${ 5 eq 5} | true |
!= 或 ne | 不等于 | ${ 5 !=5 } 或 ${ 5 ne 5} | false |
< 或 lt | 小于 | ${ 3<5 } 或 ${ 3 lt 5 } | true |
> 或 gt | 大于 | ${ 2>10 } 或 $ {2 gt 10} | false |
<= 或 le | 小于等于 | ${ 5<=12 } 或 ${ 5 le 12} | true |
>= 或 ge | 大于等于 | ${ 3>= 5} 或 {3 ge 5 } | false |
1.5.2逻辑运算
逻辑运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
&& 或 and | 与运算 | KaTeX parse error: Expected '}', got '&' at position 10: {12 ==12 &̲& 12<11}或 {12 == 12 and 12 <11} | false |
|| 或 or | 或运 | 12 = = 12 ∣ ∣ 12 < 11 或 {12 ==12 || 12<11}或 12==12∣∣12<11或 {12 == 12 or 12 <11} | true |
! 或 not | 取反运算 | KaTeX parse error: Expected 'EOF', got '}' at position 7: !true }̲或{not true } | false |
1.5.3算数运算
算数运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
+ | 加法 | ${ 12 + 18} | 30 |
- | 减法 | ${ 18 - 8 } | 10 |
* | 乘法 | ${ 12*12 } | 144 |
/ 或 div | 除法 | ${ 144/12 } 或 ${ 144 div 12} | 12 |
% 或 mod | 取模 | ${ 144%10} 或 ${ 144 mod 10} | 4 |
1.5.4empty运算
empty运算可以判断一个数据是否为空,如果为空,则输出 true, 否则输出false
以下几种情况为空:
- 值为null 值的时候,为空
- 值为空串的时候,为空
- 值是object类型数组,长度为零的时候
- list集合,元素个数为零
- map集合,元素个数为零
1.5.5三元运算
1.5.6"."运算和 [] 中括号运算符
. 点运算,可以输出Bean对象中某个属性的值
[] 中括号运算,可以输出有序集合中某个元素的值,可以输出map集合中key里含有特殊字符的key的值。
1.6EL表达式的11个隐含对象
是EL表达式中自己定义的,可以直接使用
变量 | 类型 | 作用 |
---|---|---|
pageContext | PageContextImpl | 它可以获取jsp中九大内置对象 |
pageScope | Map<String,Object> | 它可以获取pageContext域中的数据 |
requestScope | Map<String,Object> | 它可以获取Request域中的数据 |
sessionScope | Map<String,Object> | 它可以获取Session域中的数据 |
applicationScope | Map<String,Object> | 它可以获取SetvletContext域中的数据 |
param | Map<String,String> | 它可以获取请求参数的值 |
paramValues | Map<String,String[]> | 它可以获取多个请求参数的值 |
header | Map<String,String> | 它可以获取请求头的信息 |
headerValues | Map<String,String[]> | 它可以获取请求头的信息,它可以获取多个值的情况 |
cookie | Map<String,Cookie> | 它可以获取当前请求的Cookie信息 |
initParam | Map<String,String> | 他可以获取在web.xml中配置的上下文参数 |
2.JSTL标签库
2.1JSTL简介
JSTL标签库全称是指JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源码的JSP标签库
EL表达式主要是为了替换JSP中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个JSP页面变得更加简洁。
JSTL主要由五个不同功能的标签库组成
功能范围 | URL | 前缀 |
---|---|---|
核心标签库–重点 | http://java.sun.com/jsp/jstl/core | c |
格式化 | http://java.sun.com/jsp/jstl/fmt | fmt |
函数 | http://java.sun.com/jsp/jstl/functions | fn |
数据库(不使用) | http://java.sun.com/jsp/jstl/sql | sql |
XML(不使用) | http://java.sun.com/jsp/jstl/xml | x |
在jsp标签库中使用taglib指令引入标签库
CORE 标签库
<%@ taglib prefix=“c” url=“http://java.sun.com/jsp/jstl.core” %>
2.2JSTL标签库的使用步骤
-
先导入jstl标签库的jar包
-
第二步,使用taglib指令引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2.2.1core核心库使用
- <c:set/ >—— 作用:set标签可以往域中保存数据
- <c:if /> —— if标签用来做if判断
- <c:choose > <c:when > <c:otherwise > 标签——多路判断。跟 swith … case …default 非常接近
- <c:forEach > 标签——遍历输出使用
//遍历list集合
// items 表示遍历的集合 var表示遍历到的数据 begin表示遍历的开始索引值 end 表示结束的索引值 step 属性表示遍历的步长值
// varStatus 属性表示当前遍历到的数据的状态
<%
List<Student02> studentList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
studentList.add(new Student02(i,"name"+i,123+i,18+i,10010+i));
}
request.setAttribute("stus",studentList);
%>
<table>
<tr>
<th>编号</th>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>手机号</th>
<th>操作</th>
</tr>
<c:forEach items="${requestScope.stus}" var="stu">
<tr>
<td>${stu.id}</td>
<td>${stu.name}</td>
<td>${stu.password}</td>
<td>${stu.age}</td>
<td>${stu.phone}</td>
<td>删除、修改、新增 </td>
</tr>
${stu} <br>
</c:forEach>
</table>