JSTL核心标签库
分类:
IT文章
•
2024-06-15 20:10:19
1 <%-- 保存数据 --%>
2 <c:set></c:set>
3
4 <%-- 获取数据 --%>
5 <c:out value=""></c:out>
6
7 <%-- 单条件判断 --%>
8 <c:if test=""></c:if>
9
10 <%-- 多条件判断 --%>
11 <c:choose></c:choose>
12 <c:when test=""></c:when>
13 <c:otherwise></c:otherwise>
14
15 <%-- 用于迭代(循环) --%>
16 <c:forEach></c:forEach>
17 <c:forTokens items="" delims=""></c:forTokens>
18
19 <%-- 重定向 --%>
20 <c:redirect></c:redirect>
1.<c:set/>给域对象赋值
JSTL标签
var:数据的名称
value:保存的数据值
scope:保存到哪个域
page:page域
request:request域
session:session域
application:application域
1 <%--
2 <c:set/> 给域对象赋值
3 --%>
4 <%-- jsp脚本 --%>
5 <%
6 //String name = "eric";
7 //pageContext.setAttribute("name", name);
8 %>
9 <%--
10 JSTL标签
11 var:数据的名称
12 value:保存的数据值
13 scope:保存到哪个域
14 page:page域
15 request:request域
16 session:session域
17 application:application域
18 --%>
19 <c:set var="name" value="jacky" scope="request"/>
20 ${requestScope.name}
View Code
2.<c:out/>获取域对象的数据
value:代表获取域中的某个域中的名称内容,如果数据在域中,必须使用EL表达式去获取
default:默认值。当前需要获取的内容为null时,那么使用默认值代替
escapeXml:默认情况下为true,out标签会把输出的内容进行转义。如果不需要转义,则为false即可。
1 <%--
2 2. <c:out/> 获取域对象的数据
3 --%>
4 <%-- EL表达式 --%>
5 ${name }<br>
6 <%--
7 value:代表获取域中的某个域中的名称内容,如果数据在域中,必须使用EL表达式去获取
8 default:默认值。当前需要获取的内容为null时,那么使用默认值代替
9 escapeXml:默认情况下为true,out标签会把输出的内容进行转义。如果不需要转义,则为false即可。
10 --%>
11 <c:out value="${name }" default="<h3>默认值</h3>" escapeXml="false"></c:out>
View Code
3.<c:if/>单条件判断
test:条件表达式。返货true的时候,就会执行if标签体的内容,否则不执行。
1 <%--
2 3.<c:if/>单条件判断
3 --%>
4 <%--
5 test:条件表达式。返货true的时候,就会执行if标签体的内容,否则不执行。
6 --%>
7 <c:if test="${10 > 8}">
8 <input type="submit" value="提交"/>
9 </c:if>
4.<c:choose/>+<c:when/>+<c:otherwise/>多条件判断
1 <%--
2 4.<c:choose/>+<c:when/>+<c:otherwise/> 多条件判断
3 --%>
4 <%--模拟登录 --%>
5 <c:set var="user" value="jacky" scope="session"/>
6 <c:choose>
7 <c:when test="${!empty sessionScope.user }">
8 欢迎回来,你的用户名是:${sessionScope.user},<a href="">【退出登录】</a>
9 </c:when>
10 <c:otherwise>
11 请先<a href="">注册</a>或<a href="">登录</a>
12 </c:otherwise>
13 </c:choose>
View Code
1 <%--
2 5.<c:forEach/>用于迭代或循环
3 --%>
4 <%
5 //List集合
6 List<Student> list = new ArrayList<Student>();
7 list.add(new Student("abc","123"));
8 list.add(new Student("def","123"));
9 list.add(new Student("ghi","123"));
10 list.add(new Student("jkl","123"));
11 pageContext.setAttribute("list", list);
12 %>
13 EL表达式:<br>${list[0]}<br>${list[1]}<br>${list[2]}<br>${list[3]}<br>
14 <%--
15 begin:从哪个元素开始遍历,从0开始 可以不写
16 end:到哪个元素为止 可以不写
17 step:增加步长。默认为1 可以不写
18 items:需要遍历的数据。(数组|List集合|Map集合),如果是获取域的数据,那么使用EL表达式获取
19 var:每个元素名称
20 varStatus:当前状态对象。该对象封装当前元素状态信息。例如count属性:表示当前遍历的是哪个元素,从1开始
21 --%>
22 JSTL标签:<br>
23 <c:forEach items="${list}" var="student" varStatus="varStats">
24 学生${varStats.count} :${student}<br>
25 </c:forEach>
26 <hr/>
27 <%
28 //Map集合
29 Map<String,Student> map = new HashMap<String,Student>();
30 map.put("001", new Student("eric","1234"));
31 map.put("002", new Student("rose","1234"));
32 map.put("003", new Student("jacky","1234"));
33 pageContext.setAttribute("map", map);
34 %>
35 EL表达式:<br>${map['001']}<br>${map['002']}<br>${map['003']}<br>
36 JSTL标签:<br>
37 <%--
38 注意:forEach标签遍历Map集合时,把每个Map的对象使用Entry封装,Entry封装键对象和值对象,
39 通过getKey()获取键对象,通过getValue()获取值对象
40 --%>
41 <c:forEach items="${map}" var="entry" varStatus="varStats">
42 <%--学生${varStats.count}:${student}<br> --%>
43 编号:${entry.key} - 姓名:${entry.value.name} - 密码:${entry.value.password}<br>
44 </c:forEach>