使用JSTL条件语句

时间:2018-11-15 12:56:03  来源:igfitidea点击:

JSTL也提供了所有基本的条件语句,使JSP页面的逻辑流程更容易阅读和维护。

条件语句包括:if条件语句循环条件语句

if条件语句 <c:if>

最基本最简单的条件语句就是<c:if>
<c:if>操作用于基于布尔表达式值来输出body块的内容。
如果表达式的结果为真,则JSP容器将对body块的内容处理,并将输出返回到当前的JspWriter。

<c:if>的语法如下:

<c:if test="expression">
    <%-- body块内容 --%>
</c:if>

if条件语句 <c:if>示例

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<jsp:useBean id="cal"
             class="java.util.GregorianCalendar" />
 
<c:set var="hour" value="${cal.time.hours}" />
 
<c:if test="${hour >=0 && hour <=11}">
   <c:out value="早上好" />
</c:if>
 
<c:if test="${hour >=12 && hour <=17}">
   <c:out value="下午好" />
</c:if>
 
<c:if test="${hour >=18 && hour <=23}">
   <c:out value="晚上好" />
</c:if>

首先,我们创建一个对象cal,它是类java.util.GregorianCalendar的一个实例。然后我们将对象的属性hours赋值给变量hour。最后,我们使用<c:if>操作来判断时间并输出对应的问候消息。

循环条件语句

循环条件语句类似其他语言的swtich case语句

在JSTL中, 可以使用 <c:choose>, <c:when>以及 <c:otherwise>来实现多个选择。 从而替代多个<c:if>的写法。

<c:choose>
    <c:when test="expression1">
        <%-- body content for expression 1  -->
    </c:when>
    <c:when test="expression2">
        <%-- body content for expression 2  -->
    </c:when>
    ...
    <c:otherwise>
        <%-- body content for otherwise  -->
    </c:otherwise>
</c:choose>

在一系列条件中,从上往下, 当条件为true时,<c:when>分支将执行,并将结果输出到JspWriter。
然后不再执行任何操作。
如果没有一个<c:when>的条件是true, <c:otherwise>分支的内容将会被进行处理并显示输出到JspWriter中。

多个条件语句 示例

上面的例子可以使用 <c:choose>, <c:when>以及 <c:otherwise>操作进行重写

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<jsp:useBean id="cal"
             class="java.util.GregorianCalendar" />
 
<c:set var="hour" value="${cal.time.hours}" />
 
<c:choose>
<c:when test="${hour >=0 && hour <=11}"><c:out value="早上好"/></c:when>
<c:when test="${hour >=12 && hour <=17}"><c:out value="下午好" /></c:when>
<c:otherwise><c:out value="晚上好"/></c:otherwise>
</c:choose>

注意:如果这样写:

<c:when test="${hour >=0 && hour <=11}">
    <c:out value="早上好" />
</c:when>

输出时,会多输出一个换行符。