JSTL标签库的基本教程之核心标签库(二)

  • 核心标签库

标签

描述

<c:out>

用于在JSP中显示数据,就像<%= ... >

<c:set>

用于保存数据

<c:remove>

用于删除数据

<c:catch>

用来处理产生错误的异常状况,并且将错误信息储存起来

<c:if>

与我们在一般程序中用的if一样

<c:choose>

本身只当做<c:when>和<c:otherwise>的父标签

<c:when>

<c:choose>的子标签,用来判断条件是否成立

<c:otherwise>

<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

<c:import>

检索一个绝对或相对 URL,然后将其内容暴露给页面

<c:forEach>

基础迭代标签,接受多种集合类型

<c:forTokens>

根据指定的分隔符来分隔内容并迭代输出

<c:param>

用来给包含或重定向的页面传递参数

<c:redirect>

重定向至一个新的URL.

<c:url>

使用可选的查询参数来创造一个URL

 

核心库标签的分类(上海尚学堂Java培训原创,转载说明出处,陆续有Java相关技术文章奉献)

u 表达式类:out、set、remove、catch

u 逻辑控制类:if、choose、when、otherwise

u 循环判断类:forEach、forTokens

u URL操作类:import、url、redirect、param

在上篇文章中,我们讲了JSTL的核心标签库的表达式类标签:out标签、set标签、remove标签、catch标签。那么我们接下来说一说逻辑控制类标签以及循环判断类标签。

² 逻辑控制类标签

l if标签(单一的if判断,没有else)

属性

描述

EL支持

是否必须

默认值

test

判断条件

支持

是

无

var

判断结果存储的变量名

不支持

否

无

scope

变量的存储范围

不支持

否

page

语法:

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>

条件成立时的输出内容

</c:if>

示例:

<c:set var="name" value="lisa"></c:set>

<!-- 当条件成立时,输出:我是lisa -->

<c:if test="${name=='lisa'}" var="var1" scope="page">我是lisa</c:if>

<!-- 当条件不成立时,不输出 -->

<c:if test="${name=='tony'}" var="var2">tony也是lisa</c:if>

var1:${var1} -- var2:${var2}

<!-- 我是lisa  var1:true -- var2:false -->

l choose、when、otherwise标签(嵌套使用相当于if-elseif-else)

属性

描述

EL支持

是否必须

默认值

test

判断条件

支持

是

无

语法:

<c:choose>

<c:when test="">

前面的条件都不成立但此条件成立时输出

</c:when>

<c:when test="">

前面的条件都不成立但此条件成立时输出

</c:when>

......

<c:otherwise>

前面的条件都不成立时才输出

</c:otherwise>

</c:choose>

示例:

<c:set var="score" value="60"></c:set>

<c:choose>

<!-- 不满足条件,不输出 -->

<c:when test="${score < 60}">

不及格

</c:when>

<!-- 满足条件,输出 -->

<c:when test="${score == 60}">

刚好及格

</c:when>

<!-- 不满足条件,不输出 -->

<c:when test="${score > 60}">

良好

</c:when>

<!-- 上面有条件成立,不输出 -->

<c:otherwise>

取消资格

</c:otherwise>

</c:choose>

<!-- 刚好  -->

² 循环判断类标签

l forEach标签(循环遍历)

forEach参数说明

名称

描述

EL支持

是否必须

默认值

items

遍历的集合对象

支持

否

无

var

每次遍历的对象

不支持

否

无

varStatus

遍历的相关信息

不支持

否

无

begin

开始的位置(正数)

支持

否

0

end

结束的位置(正数)

支持

否

集合长度

step

遍历的步长(正数)

支持

否

1

varStatus属性说明

名称

类型

说明

index

number

遍历对象的索引,从0开始

Count

number

总共循环的次数,从1开始

First

boolean

本次循环遍历的是否是集合的第一个元素

end

boolean

本次循环遍历的是否是集合的最后一个元素

语法1:遍历集合,类似(String s:new String[]{“a”,”b”})

<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>

输出内容

</c:forEach>

语法2:循环指定次数,类似(int i=0;i<5;i++)

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin"

end="end" [step="step"]>

输出内容

</c:forEach>

示例:

循环List

<%

List<String> list = new ArrayList<String>();

list.add("A");

list.add("B");

list.add("C");

list.add("D");

list.add("E");

list.add("F");

request.setAttribute("list",list);

%>

<c:forEach items="${list}" var="l" varStatus="ll" begin="1" end="5" step="2">

第${ll.count}次迭代,索引:${ll.index},值是:${l},是否是第1个:${ll.first},是否是最后 一个:${ll.last}<br>

</c:forEach>

<!--

第1次迭代,索引:1,值是:B,是否是第1个:true,是否是最后 一个:false

第2次迭代,索引:3,值是:D,是否是第1个:false,是否是最后 一个:false

第3次迭代,索引:5,值是:F,是否是第1个:false,是否是最后 一个:true

-->

遍历Map

<%

Map<String,String> map = new HashMap<String,String>();

map.put("key1", "value1");

map.put("key2", "value2");

map.put("key3", "value3");

request.setAttribute("map",map);

%>

<c:forEach items="${map}" var="m">

key:${m.key},value:${m.value}<br>

</c:forEach>

<!--

key:key3,value:value3

key:key2,value:value2

key:key1,value:value1

-->

遍历Set

<%

Set<String> set = new HashSet<String>();

set.add("周杰伦");

set.add("林俊杰");

set.add("陈奕迅");

request.setAttribute("set",set);

%>

<c:forEach items="${set}" var="s">

${s}

</c:forEach>

<!-- 陈奕迅  林俊杰 周杰伦 -->

循环指定次数

<c:forEach var="i" varStatus="ii" begin="0" end="10" step="3">

第${ii.count}次迭代,索引:${ii.index},值是:${i},是否是第1个:${ii.first},是否是最后 一个:${ii.last}<br>

</c:forEach>

<!--

第1次迭代,索引:0,值是:0,是否是第1个:true,是否是最后 一个:false

第2次迭代,索引:3,值是:3,是否是第1个:false,是否是最后 一个:false

第3次迭代,索引:6,值是:6,是否是第1个:false,是否是最后 一个:false

第4次迭代,索引:9,值是:9,是否是第1个:false,是否是最后 一个:true

-->

l forTokens标签(字符串拆分,相当于String的split方法)

名称

描述

EL支持

是否必须

默认值

items

要被拆分的字符串

支持

是

无

delims

用来拆分的字符串

不支持

是

无

var

保存每次拆分的字符串

不支持

否

无

varStatus

第几次拆分的相关信息

不支持

否

无

begin

起始位置

支持

否

0

end

终止位置

支持

否

被拆分后的长度

step

步长

支持

否

1

语法:

<c:forTokens items="str" delims="selStr" [var="varName"]

[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>

输出内容

</c:forTokens>

注:var、varStatus、begin、end、step和forEach的参数作用相同

示例:

<c:forTokens items="我,很,喜,欢,你" delims="," var="i" varStatus="a">

${i}

</c:forTokens>

<!-- 我 很 喜 欢 你 -->

JSTL标签库的基本教程之核心标签库(二)的更多相关文章

  1. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  2. (Windows)Python第三方库手动安装教程(以lxml库为例)

    案例前提:已安装Python 已安装pip 1.进入官网https://www.lfd.uci.edu/~gohlke/pythonlibs/,搜索lxml库,下载到本地(放到Python目录下的Sc ...

  3. JSP标准标签库(JSTL)之核心标签(上)

    在myeclipse中新建web项目时,会自动为我们安装JSTL库,如下图: 核心标签是我们最常用的JSTL标签.在JSP页面中引用核心标签库的语法如下: <%@ taglib uri=&quo ...

  4. JSTL 核心标签库 使用(转)

    在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...

  5. jsp引用JSTL核心标签库

    一.引用JSTL 1.  JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观. 2.  各套框架(还没有学习,比如struts,SpringMVC等 ...

  6. 10.javaweb核心标签库详解

    一.JSTL简介及在项目中安装配置 1,  简介 使用JSTL标签的目的就是不希望jsp中出现java逻辑代码 分类 2,  JSTL的安装配置 首先将jar包中的各个标签库配置文件拷贝到项目WEB- ...

  7. 菜鸟学Java(三)——JSTL标签之核心标签

    JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数 ...

  8. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  9. JSTL 核心标签库 使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

随机推荐

  1. 除非你是BAT,前端开发中最好少造轮子

    站在前人的肩膀上 HTML.CSS.JavaScript是前端的根基,这是无可否认的事实.正如一辆车当然都是由一堆钢板和螺钉组成的,但是现在还有人拎着个锤子敲敲打打的造车吗?李书福说过,“汽车不过是四 ...

  2. Linode KVM安装Windows系统的设置方法

    以前我们用老的Linode VPS主机的时候是采用的XEN架构的,如今我们新注册账户,以及新开的机器是KVM架构.根据后台的设置,我们看到好多网友有在LINODE中安装WINDOWS系统,理论上是可以 ...

  3. BUAAOO第二单元多线程电梯作业总结

    第二单元多线程作业需要保证线程安全

  4. 加密 解密 RSA & AES & DES

    git: https://github.com/XHTeng/XHCryptorTools rsa RSA加解密中必须考虑到的密钥长度.明文长度和密文长度问题.明文长度需要小于密钥长度,而密文长度则等 ...

  5. logstash报错 :backtrace=>["org/jruby/RubyIO.java:1457:in `write'", "org/jruby/RubyIO.java:1428:in `write'"

    报错: [2019-04-16T15:54:07,827][FATAL][logstash.runner ] An unexpected error occurred! {:error=>#&l ...

  6. SEO百问

    SEO 的工作过程中,大家都会碰到很多这样或那样的问题,做 SEO 随着时间慢慢变长之后,知识会慢慢地积累,之前的问题也会慢慢的都被解答.这里是码动世界为大家整理的有关 SEO 百问百答. 1. 百度 ...

  7. widnow 下配置php开发环境

    首先下载Php 和 Nginx php 下载链接 nginx 下载链接 下载完成之后 解压到对应目录 (我这里存放在e盘) 解压之后 进入nginx目录 直接双击nginx.exe(一闪而过); 之后 ...

  8. [译]使用explain API摆脱ElasticSearch集群RED苦恼(转)

    "哔...哔...哗",PagerDuty的报警通知又来了. 可能是因为你又遭遇了节点宕机, 或者服务器机架不可用, 或者整个ElasticSearch集群重启了. 不管哪种情况, ...

  9. python opencv 处理文件、摄像头、图形化界面

    转换成RGB import cv2 import numpy as ny img = ny.zeros( ( 3 , 3 ),ny.float32) img=cv2.cvtColor(img,cv2. ...

  10. 学习笔记----html的lang属性

    lang属性的取值应该遵循 BCP 47 - Tags for Identifying Languages. 单一的 zh 和 zh-CN 均属于废弃用法. 问题主要在于,zh 现在不是语言code了 ...