其他分享
首页 > 其他分享> > JSTL

JSTL

作者:互联网

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:

将指定格式的字符串转换成日期类型


	

	

 

标签:格式化,迭代,标签,when,JSTL,choose,otherwise
来源: https://blog.51cto.com/bigdata/2866493