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


相关推荐

  • About Heartbleed

    About HeartbleedTwoarticlesforheartbleedbuhttp://gizmodo.com/how-heartbleed-works-the-code-behind-the-internets-se-1561341209http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html

    2022年7月25日
  • 软件架构与设计模式_软件架构设计

    软件架构与设计模式_软件架构设计什么是架构?软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。ANSI/IEEE610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组…

    2022年8月31日
  • iocomp入门教程(绘制Plot)[通俗易懂]

    iocomp入门教程(绘制Plot)[通俗易懂]最近要做一个项目需要绘制曲线,为了节省时间,就选用了iocomp控件,可网上相关的教程极少,官方给的文档还是比较详尽,但缺少具体的前期准备步骤,在初次接触这个控件很容易蒙,所以我写下这篇,给入门者以便利。用到的材料:iocomp激活成功教程版(目前常见的为V3和V4,两个版本按喜好选择吧~…

    2022年7月25日
  • UPX 脱壳初见

    UPX 脱壳初见1.壳是什么?加壳一般是指保护程序资源的方法.脱壳一般是指除掉程序的保护,用来修改程序资源.病毒加壳技术与脱壳杀毒方法:壳是什么?脱壳又是什么?这是很多经常感到迷惑和经常提出的问题,其实这个问题一点也不幼稚。壳,在我们的印象中,它的作用就是保护,例如龟壳,这是传统意义上的壳,通常被用来保护自己;今天我们讨论的壳是程序的壳,它的功能和一般意义上的壳有相同的地方,它们都是保护作用,在一…

    2022年7月19日
  • SSM-Spring整合Mybatis[通俗易懂]

    SSM-Spring整合Mybatis[通俗易懂]步驟导入相关jar包junitmybatismysql数据库spring相关的aop植入mybatis-spring[new]<!–导入依赖–> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifa

    2022年8月8日
  • Intellij IDEA 主题导入与删除「建议收藏」

    一、IntelliJIDEA导入主题下载主题通过此[地址][1]下载自己喜欢的主题。在IntelliJIDEA中导入主题【File】-【ImportSettings】-选择下载的主题-重启IntelliJIDEA后生效。配置主题通过Ctrl+Alt+S快捷键开发Settings面板-【Editor】-【ColorSchem…

    2022年4月12日

发表回复

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

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