流程控制标签
流程控制标签主要用于对页面简单业务逻辑进行控制。
流程控制标签包含有4个:<c:if>标签、<c:choose>标签、<c:when>标签和<c:otherwise>标签。
下面将介绍这些标签的功能和使用方式。
1.2.1、<c:if>标签
【功能】:<c:if>同程序中的if作用相同,用来实现条件控制。
【语法1】:<c:if test=”条件1” var=”name” [scope=”page|request|session|application”]>
【语法2】:<c:if test=”条件2” var=”name”[scope=”page|request|session|application”]>
【参数说明】:
(1)test属性用于存放判断的条件,一般使用EL表达式来编写。
(2)var指定名称用来存放判断的结果类型为true或false。
(3)scope用来存放var属性存放的范围。
【使用场景】:在开发中经常会出现不同用户的权限,首先对用户名进行判断(包括进行数据库验证,该功能可以由 JavaBean 实现,使用 EL 表达式得到一个布尔型的结果),把判断的结果存放在不同的 JSP 范围内(比如常用的 session 内),这样在每个页面都可以得到该用户的权限信息,根据不同权限的用户显示不同的结果。【示例代码】:代码1.2.1实现了用户输入用户名提交到自身页面,页面判断用户是否为admin,如果是将出现欢迎界面,如果不是显示不同结果。
代码1.2.1 <c:if>标签使用示例:coredemo06.jsp
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>JSTL: -- if标签示例</title>
6 </head>
7 <body>
8 <h4>if标签示例</h4>
9 <hr>
10 <form action="coredom06.jsp" method="post">
11 <input type="text" name="uname" value="${param.uname}">
12 <input type="submit" value="登录">
13 </form>
14 <c:if test="${param.uname=='admin' }" var=”adminchock”>
15 <c:out value="管理员欢迎您!">
16 </c:out>
17 </c:if>
18 ${adminchock}
19</body>
20</html>
【代码解析】:
(1)第10~13行创建一个表单,表单中的元素为一个text文本输入框,一个提交按钮,并把信息提交给本页。
(2)第14行使用if标签进行判断,如果输入的为admin将显示出定义的字符串,并把检验后的结果赋给adminchock,
存储在默认的page范围中。
(3)第18行使用EL表达式得到adminchock的值,如果输入的用户名为admin将显示true。
1.2.2、 <c:choose> 、 <c:when> 和 <c:otherwise> 标签这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用。
【语法1】:
<c:choose>
<c:when>
//业务逻辑1
<c:otherwise>
//业务逻辑2
<c:otherwise>
//业务逻辑3
</c:choose>
【语法2】:
<c:when text=”条件”>
表达式
</c:when>
【语法3】:
<c:otherwise>
表达式
</c:otherwise>
【参数说明】:
(1)语法1为3个标签的嵌套使用方式,<c:choose>标签只能和<c:when>标签共同使用。
(2)语法2为<c:when>标签的使用方式,该标签都条件进行判断,一般情况下和<c:choose>共同使用。
(3)<c:otherwise>不含有参数,只能跟<c:when>共同使用,并且在嵌套中只允许出现一次。
【示例代码】:代码1.2.2设定一个score变量的值为85,使用嵌套标签进行判断,根据判断返回结果。
代码1.2.2 循环控制标签:coredemo07.jsp
1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>JSTL: -- choose及其嵌套标签标签示例</title>
6 </head>
7 <body>
8 <h4>choose及其嵌套标签示例</h4>
9 <hr>
10 <c:set var="score">85</c:set>
11 <c:choose>
12 <c:when test="${score>=90}">
13 你的成绩为优秀!
14 </c:when>
15 <c:when test="${score>=70&&score<90}">
16 您的成绩为良好!
17 </c:when>
18 <c:when test="${score>60&&score<70}">
19 您的成绩为及格
20 </c:when>
21 <c:otherwise>
22 对不起,您没有通过考试!
23 </c:otherwise>
24 </c:choose>
25 </body>
26 </html>
【代码解析】:
(1)第10行通过set标签设定score的值为85。
(2)第12~22行使用<c:when>进行条件判断。如果大于等于90,输出“您的成绩为优秀”;
如果大于等于70小于90,输出“您的成绩为良好”;大于等于60小于70,输出“您的成绩为及格”;
其他(otherwise)输出“对不起,您没能通过考试”。