EL表达式
EL的概述
EL(Expression Language):目的是为了是jsp写起来更加简单。
EL表达式只能获取存在4个作用域中的数据。
EL获取对于null这样的数据,在页面中表现为空字符串。
EL语法结构:${expression}
eg:
<!--JSP脚本写法-->
<%
pageContext.setAttribute("name","widsom");
String value = (String)pageContext.getAttribute("name") ;
out.print(value);
%>
<!--EL表达式写法-->
${name}
最终输出的都是:widsom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
${name}的原理是pageContext.findAttribute(“name”);所以${}底层调用的就是pageContext.findAttribute()方法。
EL运算符
点运算符
<%
User user = new User("widsom");
pageContext.setAttribute("user",user);
%>
${user.name}
输出的是:widsom
1
2
3
4
5
6
7
8
9
${user.name},等价于user.getName()方法。点(.)运算符相当于调用getter(),点后面跟的是属性名。
属性导航:${user.city.name}
表示的是User对象调用getCity(),比如返回一个City对象,City对象调用getName()方法。然后输出。
[]运算符:点运算符能做的,它也可以,点不能做的,它也可以。
${user.name}等价于${user[‘name’]}或者${user[“name”]}
eg1:
<%
List<String> list = new ArrayList();
list.add("111111");
list.add("222222");
list.add("333333");
pageContext.setAttribute("list",list);
%>
<%-- 这里我们不能采用点运算符,如:${list.1} ,而是使用[]运算符 --%>
${list[1]}
输出的是:222222
1
2
3
4
5
6
7
8
9
10
11
12
13
eg2:
<%
Map<String,String> map = new HashMap();
map.put("a","aaaaaa");
map.put("b","bbbbbb");
map.put("c","cccccc");
pageContext.setAttribute("map",map);
%>
<!--这里的a代表的是map中的key-->
${map['a']}
${map["a"]}
${map.a}
三个输出的都是:aaaaaa
也就是说,这里点运算符和[]运算符作用是一样的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
empty运算符
判断null,空字符串和没有元素的集合,都返回true。
eg:
<%
String str1 = null;
pageContext.setAttribute("str1",str1);
String str2 = "";
pageContext.setAttribute("str2",str2);
String str3 = "123";
pageContext.setAttribute("str3",str3);
List<String> list1 = new ArrayList();
pageContext.setAttribute("list1",list1);
List<String> list2 = new ArrayList();
list2.add("123");
pageContext.setAttribute("list2",list2);
%>
${empty str1}
${empty str2}
${empty str3}
${empty list1}
${empty list2}
输出的值为:
true
true
false
true
false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
三元运算符
如:
${empty list1 ? “列表没有数据” : “列表有数据”}
eg:
<%
pageContext.setAttribute("sex", 0);
%>
<input type="radio" name="sex" value="m" ${sex==0 ? "checked='checked'" : "" }/>男<br/>
<input type="radio" name="sex" value="f" ${sex==1 ? "checked='checked'" : "" }/>女<br/>
我们切换pageContext.setAttribute()的值,刷新页面,就可以看到效果了。
1
2
3
4
5
6
7
8
EL隐式对象(11个)
如图所示:
其实这11个对象基本实现对请求消息的封装。
这里我们有几个需要注意的:
requestScope不是jsp中的request内置对象。
sessionScope不是jsp中的session内置对象。
applicationScope不是jsp中的application内置对象。
例如:我们要获取/应用名称
JSP语法:request.getContextPath();
在EL表达式:${pageContext.request.contextPath}
我们需要借助pageContext获取其他域对象调用。
1
2
3
4
5
6
JSTL
JSTL(JavaServerPages Standard Tag Library)
JSP标准标签库
JSTL的作用:使用JSTL实现JSP页面中逻辑处理。如判断、循环等。
JSTL的使用
在JSP页面添加taglib指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
1
使用JSTL标签
<!--表示if标签-->
<c:if test=""></c:if>
1
2
常用的标签介绍
核心标签库core:
通用标签
set:设置变量
<c:set var="num" value="${10+5}" scope="page"></c:set>
out:输出数据
<c:out value="${num}"></c:out><br/>
remove:移除变更
<c:remove var="num" /><br/>
条件标签
if
<c:set var="num" value="5"></c:set>
<c:if test="${num>3}">
结果为true
</c:if>
<c:if test="${num<=3}">
结果为false
</c:if>
1
2
3
4
5
6
7
8
9
10
choose:相当于Java中的switch语句
<c:set var="num" value="5" />
<c:choose>
<c:when test="${num==1}">
num==1
</c:when>
<c:when test="${num==2}">
num==2
</c:when>
<c:when test="${num==3}">
num==3
</c:when>
<c:when test="${num==4}">
num==4
</c:when>
<c:when test="${num==5}">
num==5
</c:when>
<c:otherwise>
num不在范围内
</c:otherwise>
</c:choose>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
迭代标签
forEach标签具有以下一些属性:
var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。
items:要进行迭代的集合。对于它所支持的类型将在下面进行讲解。
varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。
begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数。
end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数。
step:迭代的步长。
普通for循环
<c:forEach var="i" begin="0" end="10" step="1">
${i}
</c:forEach>
1
2
3
增强for循环
<%
List<String> list = new ArrayList();
list.add("111111");
list.add("222222");
list.add("333333");
pageContext.setAttribute("list",list)
%>
<c:forEach items="${list}" vatStatus="str">
${i}
</c:forEach>
1
2
3
4
5
6
7
8
9
10
11
varStatus:
varStatus这个属性会记录着遍历的元素的一些信息:
getIndex():索引(从0开始)
getCount():数量(从1开始)
isFirst():是否是第一个元素
isLast():是否是最后一个元素
<c:forEach items="${list} var="i" varStatus="str">
<tr>
<td>${i}</td>
<td>${str.index}</td>
<td>${str.count}</td>
<td>${str.first}</td>
<td>${str.last}</td>
</tr>
</c:forEach>
---------------------
【转】
作者:张行之
来源:CSDN
原文:https://blog.csdn.net/qq_33689414/article/details/60364860
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|