JSTL核心标签库
Posted chromer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL核心标签库相关的知识,希望对你有一定的参考价值。
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}
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>
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>
5.<c:forEach/>用于迭代或循环
begin:从哪个元素开始遍历,从0开始 可以不写
end:到哪个元素为止 可以不写
step:增加步长。默认为1 可以不写
items:需要遍历的数据。(数组|List集合|Map集合),如果是获取域的数据,那么使用EL表达式获取
var:每个元素名称
varStatus:当前状态对象。该对象封装当前元素状态信息。例如count属性:表示当前遍历的是哪个元素,从1开始
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>
以上是关于JSTL核心标签库的主要内容,如果未能解决你的问题,请参考以下文章