IT兄弟连 JavaWeb教程 JSTL常用标签

IT兄弟连 JavaWeb教程 JSTL常用标签

1.条件标签

条件标签能够实现Java语言中的if语句以及if-else语句的功能,它包括以下几种:

<c:if>:用于实现Java语言中的if语句的功能。

<c:choose>、<c:when>、<c:otherwise>:用于实现Java语言中if-else语句的功能。

(1)<c:if>标签

<c:if>标签用于实现Java语言中的if语句的功能,它的语法为:

<c:if test=”逻辑表达式” var=”代表逻辑表达式的值的命名变量的名字”

      scope= “{page|request|session|application}” />

</c:if>

<c:if>标签会把逻辑表达式的值存放在var属性指定的命名变量中,scope属性则指定命名变量的范围,scope属性的默认值是page。

例如以下<c:if>标签先判断username请求参数的值是否为Tom,然后把判断结果作为result命名变量存放在请求范围内:

<c:if test=”${param.username==’Tom’}”

       var = “result” scope=”request” />

${result}

</c:if>

以上<c:if>标签等价于以下Java程序片段:

<%

    String username = request.getParamaeter(“username”);

    if(username!=null &&”Tom”.equals(username)){

          request.setAttribute(“result”,true);

    }else{

          reuqest.setAttribute(“result”,false);

    }

%>

<c:if>标签还可以包含标签主体,只有当逻辑表达式的值为true时,才会执行标签主体。例如:

<c:if test=${param.save==’user’}” >

     Saving user

     <c:set var=”user” value=”Tom” />

</c:if>

以上<c:if>标签等价于以下Java程序片段:

<%

     String save=request.getParameter(“save”);

     if(save!=null && “user”.equals(save)){

           out.print(“Saving user”);

           pageContext.setAttribute(“user”,”Tom”);

     }

%>

 

(2)<c:choose>、<c:when>、<c:otherwise>标签

<c:choose>、<c:when>、<c:otherwise>标签在一起连用,可以实现Java语言中的if-else语句的功能。例如如下代码根据username请求参数的值来打印不同的结果:

<c:choose>

     <c:when test=”${empty param.username}”>

          UnKnown user;

     </c:when>

     <c:when test=”${param.username==’Tom’}”>

          ${param.username} is manager.

     </c:when>

     <c:otherwise>

          ${param.username} is employee.

     </c:otherwise>

</c:choose>

以上标签等价于以下Java程序片段:

<%

     String username=request.getParameter(“username”);

     if(username==null){

           out.print(“UnKnown user.”);

     }else{

           out.print(username + “is manager.”);

     }else{

           out.print(username + “is employee.”);

     }

%>

<c:choose>、<c:when>、<c:otherwise>标签的使用必须符合以下语法规则:

<c:when>和<c:otherwise>不能单独使用,它们必须位于<c:choose>父标签中。

在<c:choose>标签中可以包含一个或多个<c:when>标签。

在<c:choose>标签中可以不包含<c:otherwise>标签。

在<c:choose>标签中如果同时包含<c:when>和<c:otherwise>标签,那么<c:otherwise>必须位于<c:when>标签之后。

 

2.<c:forEach>标签

(1)<c:forEach>标签的基本语法为:

<c:forEach var=”代表集合中的一个元素的命名变量的名字” items=”集合”>

标签主体

</c:forEach>

<c:forEach>标签每次从集合中取出一个元素,并且把它存放在NESTED范围内的命名变量中,在标签主体中可以访问这个命名变量。NESTED范围是指当前标签主体构成的范围,只有当前标签主体才能够访问NESTED范围内的命名变量。

例如以下代码先创建了一个names集合,然后通过<c:forEach>标签遍历这个集合,并打印集合中的所有元素。

<%@ page import=”java.util.HashSet” %>

<%

     HashSet names = new HashSet();

     names.add(“Tom”);

     names.add(“Mike”);

     names.add(“Linda”);

%>

<c:forEach var=”name” items=”<%=names %>”>

     ${name} &nbsp;

</c:forEach>

运行以上代码,得到的打印结果为”Tom Mike Linda”。以上<c:forEach>标签等价于以下的Java程序片段:

<%@ page import=”java.util.HashSet” %>

<%

     for(String name : names){

         pageContext.setAttribute(“name”,name);

         name =(String)pageContext.getAttribute(“name”);

         out.print(name + ” “);

         pageContext.removeAttribute(“name”);

     }

%>

(2)<c:forEach>标签的varStatus属性

<c:forEach>标签的varStatus属性用于设定一个javax.servlet.jsp.jstl.core.Loop TagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。

count:当前元素在集合中的序号,从1开始计数。

index:当前元素在集合中的索引,从0开始计数。

first:当前元素是否是集合中的第一个元素。

last:当前元素是否是集合中的最后一个元素。

(3)<c:forEach>标签的begin、end和step属性

<c:forEach>标签的begin、end和step属性分别指定循环的起始索引、结束索引和步长。

(4)<c:forEach>标签可以遍历的集合

<c:forEach>标签可以遍历的集合包括:

1)java.util.Set、java.util.List、java.util.Map、java.util.Iterator和java.util.Enumeration接口的实现类。

2)Java数组

3)以逗号分隔的字符串。

 

3.<c:forTokens>标签

<c:forTokens>标签用于遍历字符串中用特定分隔符分隔的子字符串,并且能重复执行标签主体。<c:forTokens>标签的基本语法如下:

<c:forTokens var=”代表字符串的命名变量的名字”

     items=”被分隔的字符串” delims=”分隔符”>

标签主体

</c:forTokens>

在<c:forTokens>标签中也可以使用varStatus、begin、end和step属性。

转载于:https://www.cnblogs.com/itxdl/p/10854808.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100926.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Flutter 本地数据库sqflite实战操作「建议收藏」

    Flutter 本地数据库sqflite实战操作「建议收藏」Flutter本地化数据库操作、sqflite操作方法、数据库操作

    2022年5月6日
    45
  • java 中stopwatch,Stopwatch

    java 中stopwatch,Stopwatch/***Anobjectthataccuratelymeasureselapsedtime:themeasureddurationbetweentwo*successivereadingsof”now”inthesameprocess.*一个精确计算消耗时间的对象:计算在同一进程中两次连续读取当前时间之间持续的时间*Incontrast,wallti…

    2022年6月23日
    27
  • Android LayoutParams详解「建议收藏」

    Android LayoutParams详解「建议收藏」在平时的开发过程中,我们一般是通过XML文件去定义布局,所以对于LayoutParams的使用可能相对较少。但是在需要动态改变View的布局参数(比如宽度、位置)时,就必须要借助这个重要的类了。本文将结合具体场景详细讲解LayoutParams的相关知识。

    2022年9月21日
    2
  • 究竟什么是推荐?

    究竟什么是推荐?

    2021年12月3日
    81
  • matlab插值函数的优缺点,Python和Matlab插值函数的不同结果

    matlab插值函数的优缺点,Python和Matlab插值函数的不同结果我正在将代码从Matlab转换为Python2.7,在转换interp1函数时遇到问题。我看过已经贴出来的类似问题,但还没有解决。问题是新生成的值(yn)的向量的第一个值不同,而其余的几乎相同。当使用不同的插值方法时,我得到的值略有不同,但是同样的问题。目前我真的不知道为什么会这样。有没有人对此有任何了解或看到我可能犯的错误?谢谢。在变量:x=[5.5,5.46678,5….

    2022年5月15日
    36
  • JS生成随机数的算法

    JS生成随机数的算法关于随机数的过程解释:1>.Math.random()表示生成[0,1)的数,所以Math.random()*5生成的都是[0,4]的随机整数。2>Math.floor(num);参数num为一个数值,函数结果为num的整数部分。3>.Math.round(num);参数num为一个数值,函数结果为num四舍五入后的整数。4>.Math.cei…

    2022年7月14日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号