JSP 标准标签库,是一个定制标签 :
用途解决一些常见问题:迭代一个映射或者集合,条件测试,xml处理,数据库和数据库访问操作等
核心标签库:
http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作, 比如:循环、表达式赋值、基本输入输出等。
格
格式化标签库:
http://java.sun.com/jsp/jstl/fmt, 用来格式化显示数据的工作, 比如:对不同区域的日期格式化等
格式:
导入两个 jar 包
标签的使用
(一般操作域对象,变量无法操作)
条件动作标签 :
处理页面的输出结果依赖于某些输入值的情况,在 Java 中是利用 if、 if…else 和 switch 语句来进行处理的。在 JSTL 中也有 4 个标签 可以执行条件式动作指令:if、 choose、when 和 otherwise
1)if标签
可以利用 var 属性设置限域变量名,利用 scope 属性来指定其 作用范围,可以设置返回值,返回是boolean类型,通过var设置,
两种语法形式:
没有主体内容:
格式:
有主体内容
格式:
注意:JSTL 中没有 else 标签,为了模拟 else 的情景,需要使用两个 if 标签,并 且这两个标签为相反的条件。 JSTL 中没有 else 标签,为了模拟 else 的情景,需要使用两个 if 标签,并 且这两个标签为相反的条件。
<% int a = 1; if(a q w 10- 0-9
if和域对象的判断:
choose、when 和 otherwise 标签:
choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似,。choose 标签内容部必须 嵌有一个或多个 when 标签
如果有 otherwise 标签,它必须放在最后一个 when 标签之后,否则会报错。 choose 和 otherwise 标签没有属性,设置属性报错,
Attribute xxx invalid for tag choose according to TLD
when 标签则必须使用 test 属性设定 一个条件,用于确定是否处理主体内容
否则:attribute test is mandatory for tag when
choose标签中只能包含when标签和otherwise标签、when标签和otherwise标签可以包含其他标签
Illegal child tag in "c:choose" tag: "c:if" tag
choose标签中至少要有一个吻痕标签,可以没有otherwise标签
Illegal "choose" without child "when" tag
otherwise标签必须放在最后一个when标签之后
Illegal "c:when" after "c:otherwise" tag in "c:choose" tag.
otherwise标签只有在所有when标签都不成立时才会执行
格式:
分不在高,及格就好! 不及格
forEach 标签 :
forEach 是将一个主体内容迭代多次,迭代一个对象集合。可以迭代的对象包括所 有的 java.util.Collection 和 java.util.Map 接口的实现,以及对象或 者基本类型的数组,java.util.Iterator 和 java.util.Enumeration,不能在多个动作指令中使用 Iterator 或者 Enumeration,因为 Iterator 或者 Enumeration 都不能重置
var :存放现在指到的成员
varStatus:存放现在指到的相关成员信息
begin:开始的位置
end:结束的位置
step:每次迭代的间隔数
设置9x9表
${j }*${i }=${j*i }
迭代:将主体内容重复打印多次
格式:
主体内容
迭代集合:
主体内容
<% Listlist = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); request.setAttribute("list", list); %> 姓名 当前成员的下标 循环次数 当前成员是否第一次循环 当前成员是否最后一次循环 ${item } ${info.index } ${info.count } ${info.first } ${info.last }
varStatus属性的使用:
index :现在指到成员的索引
count:总共指到成员的总数
first:指到的成员是否为第一个成员
last:现在指到的成员是否为最后一个成员
<% Map
格式化动作指令 :
JSTL 提供了格式化和解析数字和日期的标签,
formatNumber、formatDate、parseNumber 及 parseDate
formatNumber 标签 :
fmatNumber 标签 该标签用指定的格式或精度来格式化数
没有主体内容
格式:
type:被格式化的类型
number:数值型
percent:百分比类型
currency:货币类型
value:被格式化的值
var:用来接收格式化后的结果的限域变量,没有设置格式化后直接输出,设置了就需通过表达式获取域对象中的值
格式化百分比,默认保留两位小数,四舍五入
maxIntegerDigits:允许最大的整数位
maxFractionDigits:允许最大的小数位
${num }
formatDate格式化日期:
格式:
value:也可以用表达式从域对象中取值
type:被格式化的类型
date:日期类型,默认值
time:时间类型
both:日期+时间类型
parseNumber:
可以将数字,货币或百分比的字符出表示法解析成指定语言环境的数字,解析代表数字,货币,百分比的字符串
parseDate:
将指定格式的字符串转换成日期类型