JSTL

JSTL

if标签

定义:
    Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库、可以解决迭代一个映射或者集		合、条件测试、XML 处理,甚至数据库和访问数据库操作等
准备工作:
	1、导包  jstl.jar以及standard.jar 放到WEB-INF/lib下
	2、<%@taglib uri=”核心标签库路径” prefix=”前缀”%>
			uri中写http://java.sun.com/jsp/jstl/core(叫核心标签库)
			或者http://java.sun.com/jsp/jstl/fmt	(叫格式化标签库)
			前缀可以随意指定,但是一般按照约定熟成的规范来写
	c:if标签:
		格式:
			<c:if test="条件" var="指定将条件结果存域对象中键的名称" scope="指定将条件结果存在哪一个域对象中,默认page|request|session|application">
				主体内容
			</c:if>
			相当于
			if(条件){
				主体内容
			}

代码:

<%--无主体部分 --%>
	<!--
    <c:if test="条件" var="用于存储条件结果的变量" scope="var属性的作用域,默认page">
    </c:if>
    -->
    <%
    request.setAttribute("num", "1");
    %>
    <c:if test="${'1==1'}" var="flag"></c:if> <!-- flase -->
    <c:if test="1==1" var="flag"></c:if> <!-- flase -->
    <c:if test="${'num==1'}" var="flag"></c:if> <!-- true -->
    <c:if test="${1==1}" var="flag"></c:if> <!-- true -->
<%--有主体部分 --%>
	<!--
    <c:if test="条件" var="用于存储条件结果的变量" scope="var属性的作用域,默认page">
    主体内容,条件为true时才执行
    </c:if>
    -->
	<%
    request.setAttribute("num", "1");
    %>
    <c:if test="${num < 10 }">
    <h1>num比10小</h1>
    </c:if>
    <c:if test="${num > 10 }">
    <h1>num比10大</h1>
	</c:if>

choose、when 和 otherwise 标签

choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似。otherwise 标签用于默认的条件代码块,如果所有的 when 标签的测试条件运算结果都不为 true,就会执行该代码块。如果有 otherwise 标签,它必须放在最后一个when 标签之后,否则会报错。choose 和 otherwise 标签没有属性,when标签则必须使用 test 属性设定一个条件,用于确定是否处理主体内容。
注意点:
	1、choose标签中只能有when和otherwise标签,when和otherwise标签中可有其他标签
    2、choose中至少有一个when标签
    3、choose标签和otherwise标签没有属性,when标签必须要有test属性
    4、otherwise标签必须放在最后一个when标签之后
    5、当所有的when标签的条件都不成立时,才执行otherwise标签中的语句

代码

 	<%
   	 request.setAttribute("score", 80);
    %>
        <c:choose>
        <c:when test="${score >= 90 }">
        <h2>很优秀!</h2>
        </c:when>
        <c:when test="${score >= 80 && score < 90 }">
        <h2>良好!</h2>
        </c:when>
        <c:when test="${score >= 60 && score < 80 }">
        <h2>及格!</h2>
        </c:when>
        <c:otherwise>
        <h2>学渣!</h2>
        </c:otherwise>

迭代标签forEach

forEach 是将一个主体内容迭代多次,或者迭代一个对象集合。可以迭代的对象包括所有的
java.util.Collection 和 java.util.Map 接口的实现,以及对象或者基本类型的数组。他还可以迭代
java.util.Iterator 和 java.util.Enumeration,但不能在多个动作指令中使用 Iterator 或者
Enumeration,因为 Iterator 或者 Enumeration 都不能重置(reset)。

20190911225633.png

[外链图片转存失败(img-1njzsP8G-1568247823396)(https://i.loli.net/2019/09/11/wLs8SCuQziEFoGm.png)]

代码

<c:forEach var="每次循环的成员(限域变量)" begin="开始数" end="结束数" step="间隔数(默认
是1)" >
主体内容
</c:forEach>
<c:forEach var="i" begin="0" end="10">
${i }、主体内容<br/>
</c:forEach>
<c:forEach var="i" begin="0" end="10" step="3">
${i }、主体内容<br/>
</c:forEach>

迭代List集合

<%
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
// 将集合存到域对象中
request.setAttribute("list", list);
%>
<table border="1" style="border-collapse: collapse;">
<tr>
<td>当前成员内容</td>
<td>当前成员的下标</td>
<td>当前循环次数</td>
<td>是否是第一个成员</td>
<td>是否是最后一个成员</td>
</tr>
<c:forEach items="${list}" var="item" begin="0" end="9" varStatus="itemStr">
<tr>
<td>${item}</td>
<td>${itemStr.index }</td>
<td>${itemStr.count }</td>
<td>${itemStr.first }</td>
<td>${itemStr.last }</td>
</tr>
</c:forEach>
</table>
<%
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setUserId(1);
user1.setUname("张三");
user1.setAge("18");
user1.setSex("男");
User user2 = new User();
user2.setUserId(2);
user2.setUname("李四");
user2.setAge("19");
user2.setSex("女");
User user3 = new User();
user3.setUserId(3);
user3.setUname("王五");
user3.setAge("20");
user3.setSex("男");
userList.add(user1);
userList.add(user2);
userList.add(user3);
request.setAttribute("userList", userList);
%>
<table border="1" style="border-collapse: collapse;">
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<c:forEach items="${userList }" var="user">
<tr>
<td>${user.userId }</td>
<td>${user.uname }</td>
<td>${user.age }</td>
<td>${user.sex }</td>
</tr>
</c:forEach>
</table>
<%
Map<String,User> map = new HashMap<>();
map.put("zhangsan", user1);
map.put("lisi", user2

20190911230244.png

迭代Map集合

<%
Map<String,User> map = new HashMap<>();
map.put("zhangsan", user1);
map.put("lisi", user2);
map.put("wangwu", user3);
request.setAttribute("map", map);
%>
<c:forEach items="${map }" var="item">
${item.key }---${item.value }---${item.value.uname }<br>
</c:forEach>

运行结果

20190911230437.png

格式化标签

formatNumber 标签

该标签用指定的格式或精度来格式化数字<fmt:formatNumber> 标签有如下属性:

20190911230635.png

代码(第一种语法,无主体内容)

<%
request.setAttribute("num", 1000);
%>
<fmt:formatNumber var="i" value="0.25" type="percent"></fmt:formatNumber>
${i }
<fmt:formatNumber value="${num }" type="currency"></fmt:formatNumber>
<!-- 25% ¥1,000.00 -->

有主体内容

<%
request.setAttribute("num", 123456.789);
%>
<fmt:formatNumber type="currency">
1000000
</fmt:formatNumber>
<fmt:formatNumber type="number" maxIntegerDigits="4" maxFractionDigits="2">
${num }
</fmt:formatNumber>
<!-- ¥1,000,000.00 3,456.79 -->

formatDate标签

使用指定的风格或模式格式化日期和时间<fmt:formatDate> 标签有如下属性:

20190911231054.png

parseNumber标签

parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环境的数字

代码

<%
request.setAttribute("num", "¥1,000.00");
request.setAttribute("num1", "123,456.789");
%>
<fmt:parseNumber value="20%" type="percent"></fmt:parseNumber>
<!-- 0.2 -->
<fmt:parseNumber value="${num }" type="currency"></fmt:parseNumber>
<!-- 1000 -->
<fmt:parseNumber value="${num1 }" type="number" var="aa"></fmt:parseNumber>${aa
}
<!-- 123456.789 -->

parseDate 标签

此标签为指定区域解析日期和时间的字符串表示法,即解析一个代表着日期或时间的字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值