web开发 jsp页面3 JSTL if choose/when/otherwise forEach

介绍JSTL的使用

JSTL的使用
1. 下载jstl所需要的jar包 (standard.jarjstl.jar)
2. 在项目的web目录下的WEB-INF中新建一个lib目录,将jar包拷贝进去
3. 在jar文件处右键选择buildpath
4. 在需要使用标签库的JSP页面通过taglib标签引入指定库

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--通过taglib标签引入所需要的标签库 --%>
<%@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>JSTL的使用</title>
</head>
<body>
	<c:if test = "${1 == 1}">
		Hello JSTL
	</c:if>
</body>
</html>

if标签

if标签
格式:

<c:if test = "<boolean>" var = "<string>" scope = "<string>">
	...
</c:if>

c对应的是prefix里面的参数
常用属性:
test:条件判断,操作的是域对象,接受返回结果是boolean类型的值(必要属性)
var:限域变量名(存放在作用域中的变量名),用来接受判断结果(可选属性)
scope:限域变量名的范围(page、request、session、application)(可选属性)
注:
1、标签操作的一般都是域对象
2、if标签没有else,如果想要else的效果,就需要设置两个完全相反的条件

<body>
	 <%
	 	//设置数据
	 	request.setAttribute("num", 10);
	 %>
	 <c:if test = "${num > 0}">
	 	数值大于0
	 </c:if>
	 <br>
	 <c:if test = "${num <= 0}">
	 	数值不大于0
	 </c:if>
	 <br>
	 <c:if test = "${num > 100}" var = "flag" scope = "session">
	 </c:if>
	 ${flag} -- ${requestScope.flag}-- ${sessionScope.flag}
</body>

choose/when/otherwise

类似于switch语句
choose、when和otherwise标签
格式:

<c:choose>
	<c:when test="<boolean>">
		...
	</c:when>
	<c:when test="<boolean>">
		...
	</c:when>
	...
	...
	<c:otherwise>
		...
	</c:otherwise>
</c:choose>

属性:
1、choose标签没有属性
2、when标签只有一个test属性,必须属性
3、otherwise标签没有属性
注意:
1、choose标签和otherwise标签没有属性,而when标签必须有属性
2、choose标签里面至少有一个when标签,可以没有otherwise标签
3、otherwise标签必须设置在最后一个when标签之后
4、choose标签中只能设置when标签与otherwise标签
5、when标签和otherwise标签里面可以嵌套其他标签
6、otherwise标签会在所有的when标签不执行时才会执行

<body>
	 <%
	 	request.setAttribute("score", 100);
	 %>
	 <c:choose>
	 	<%-- <c:if test="${score == 70}">70</c:if> --%>
	 	<c:when test="${score < 60 }">
	 		<h2>不及格!</h2>
	 	</c:when>
	 	<c:when test="${score == 60 }">
	 		<h2>刚好及格,真不错</h2>
	 	</c:when>
	 	<c:when test="${score > 60 && score < 80 }">
	 		<h2>合理</h2>
	 		<c:if test="${score == 70}">70</c:if>
	 	</c:when>
	 	<c:otherwise>
	 		<h2>Gooooood!</h2>
	 	</c:otherwise>
	 </c:choose>
</body>

Foreach

格式:

	<c:forEach>
		items = "<object>"
		begin = "<int>"
		end = "<int>"
		step = "<int>"
		var = "<string>"
		varStatus = "<string>"
	</c:forEach>

属性:
begin:开始数
end:结束数
step:间隔数
var:限域变量名,用来接收当前遍历的成员
items:要循环的数据(数组、list、map)

forEach varStatus属性(不重要)
index:当前这次迭代从0开始的迭代索引
count:当前这次迭代从1开始的迭代计数
first:用来表明当前这轮迭代是否为第一次迭代的标志
last:用来表明当前这轮迭代是否为最后一次迭代的标志

用法:

  1. 迭代主体内容多次
    <c:forEach begin=“开始数” end=“结束数” step=“间隔数” var=“限域变量名”>
    </c:forEach>
    相当于Java中for…int
    for(int i = 0; i < 10 i++){}

  2. 循环
    <c:forEach items=“要被循环的数据” var=“限域变量名”>
    </c:forEach>
    相当于Java中的foreach
    for(string str : list){
    }

<body>
	 <%--迭代主体内容多次 --%>
 	 <c:forEach var="i" begin="1" end="10" step="2">
	 	<span>${i}</span> &nbsp;
	 </c:forEach> 
	 <hr>
	 <%--循环 --%>
	 <%
	 	List<String> list = new ArrayList<String>();
	 	for(int i = 1; i <= 5; i++){
	 		list.add("A:" + i);
	 	}
	 	pageContext.setAttribute("li", list);
	 %>
	 <c:forEach items="${li}" var="item">
	 	<span>${item}</span> &nbsp;
	 </c:forEach>
	 <hr>
	 <table align="center" width="800" border="1" style="border-collapse:collapse">
	 	<tr>
	 		<th>名称</th>
	 		<th>当前成员下标</th>
	 		<th>当前成员循环数</th>
	 		<th>是否第一次被循环</th>
	 		<th>是否最后一次被循环</th>
	 	</tr>
	 	<c:forEach items="${li}" var="item" varStatus="itemp">
	 		<tr>
	 			<td>${item}</td>
	 			<td>${itemp.index }</td>
	 			<td>${itemp.count }</td>
	 			<td>${itemp.first }</td>
	 			<td>${itemp.last }</td>
	 		</tr>
	 	</c:forEach>
	 </table>
	 <hr>
	 <%--循环对象集合 --%>
	 <%
		 List<User> userList = new ArrayList<User>();
		 User user = new User(1,"zhangsan" , "123456");
		 User user2 = new User(2 , "Lisi", "123321");
		 User user3 = new User(3 , "wangwu" , "654321");
		 userList.add(user);//将数据设置到作用域中
		 userList.add(user2);
		 userList.add(user3);
		 request.setAttribute("userList", userList);
	 %>
	 <%--判断集合是否为空 --%>
	 <c:if test="${!empty userList}">
		<table align="center" width="800" border="1" style="border-collapse: collapse;">
			<tr>
				<th>用户编号</th>
				<th>用户名称</th>
				<th>用户密码</th>
				<th>用户操作</th>
			</tr>
			<c:forEach items="${userList }" var="user">
				<tr align="center">
					<td>${user.userId }</td>
					<td>${user.uname }</td>
					<td>${user.upwd }</td>
					<td><button>修改</button></td>
				</tr>
			</c:forEach>
		</table>
	</c:if>
	
	<%-- 循环Map --%>
	<%
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("map1", "aaa");
		map.put("map2", "bbb");
		map.put("map3", "ccc");
		pageContext.setAttribute("map", map) ;
	%>
	<c:forEach items="${map}" var="m">
		key:${m.key} &nbsp;value:${m.value}<br>
	</c:forEach>
</body>

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值