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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nodejs安装淘宝镜像(配置淘宝镜像)

    强烈推荐30个原生JavaScript的demo,包括canvas时钟特效、自定义视频播放器、搜索栏快速匹配、fetch访问资源、console调试技巧等,先fork后学习,详见点击打开链接,欢迎点赞~~~谢谢,共同进步学习!将npm的注册表源设置为国内的镜像1、国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度2、国内优秀npm镜像推荐及使用:http://rin…

    2022年4月18日
    943
  • Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

    Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

    2021年9月7日
    65
  • ADRC学习笔记( 一)[通俗易懂]

    ADRC学习笔记( 一)[通俗易懂]近期正在自学自抗扰技术,不得不感叹韩老师乃神人也!话不多说先把这两天的学习成果与大家分享,后续在做详细的介绍。欢迎大家批评指正。(1)过渡过程输入一个阶跃信号,其跟踪效果如图所示,可以看到毫无超调。(2)扩张状态观测器(3)非线性组合(4)整个控制器结构最后附上学习的资料,需要的小伙伴自取,simulink仿真和matalb仿真代码也会陆续分享出来,敬请关注。自抗扰学习资料…

    2022年5月12日
    37
  • taglib配置_tablib

    taglib配置_tablibtld文件放入META-INF中取名taglib.tldweb.xml中配置     XXXX   /WEB-INF/lib/包名.jar   

    2025年7月6日
    2
  • python判断linux中文件是否存在_Python判断文件是否存在的三种方法

    python判断linux中文件是否存在_Python判断文件是否存在的三种方法通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。1.使用os模块os模块中的os.path.exists()方法用于检验文件是否存在。判断文件是否存在importosos.path.exists(test_file.txt…

    2022年6月29日
    118
  • jetbrains系列软件汉化图文教程

    idea 激活码,jetbrains系列软件汉化图文教程

    2022年3月13日
    63

发表回复

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

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